{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "deb44800-1374-4c9c-ab7e-f81170f2aad0",
   "metadata": {},
   "source": [
    "# <span style=\"color: #9333EA;\">渐变柱形图</span>\n",
    "# 一.生成数据\n",
    "### 基于给定的数据库schema,利用python的faker库生成1000条结构合理，内容逼真的数据，数据包含了店铺，订单号，购买用户，发货日期，是否付款等等。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "144eb2b3-6e2e-458a-898d-d82c1a7ebc6b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "已成功生成1000条ERP订单数据（发货日期和付款日期均无空值），保存至ERP订单数据.xlsx\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "from faker import Faker\n",
    "import random\n",
    "from datetime import datetime, timedelta\n",
    "\n",
    "# 初始化Faker\n",
    "fake = Faker('zh_CN')\n",
    "\n",
    "# 生成1000条数据\n",
    "num_records = 1000\n",
    "data = []\n",
    "\n",
    "# 定义服装类相关数据\n",
    "clothing_categories = [\"T恤\", \"衬衫\", \"裤子\", \"裙子\", \"外套\", \"毛衣\", \"卫衣\", \"夹克\"]\n",
    "colors = [\"黑色\", \"白色\", \"红色\", \"蓝色\", \"绿色\", \"黄色\", \"灰色\", \"紫色\"]\n",
    "sizes = [\"XS\", \"S\", \"M\", \"L\", \"XL\", \"XXL\"]\n",
    "platforms = [\"淘宝\", \"京东\", \"拼多多\", \"抖音\", \"快手\", \"唯品会\", \"自有商城\"]\n",
    "statuses = [\"待付款\", \"已付款\", \"已发货\", \"已完成\", \"已取消\"]\n",
    "sub_order_statuses = [\"正常\", \"已拆分\", \"已合并\", \"已取消\"]\n",
    "refund_statuses = [\"无退款\", \"申请中\", \"已退款\", \"拒绝退款\"]\n",
    "stores = [f\"旗舰店{i}\" for i in range(1, 11)] + [f\"专营店{i}\" for i in range(1, 11)]\n",
    "\n",
    "# 生成一些重复的用户ID（模拟老客户）\n",
    "user_ids = [fake.uuid4() for _ in range(200)]  # 200个基础用户ID\n",
    "\n",
    "for i in range(1, num_records + 1):\n",
    "    # 生成下单时间（过去1年内）\n",
    "    order_time = fake.date_time_between(start_date='-1y', end_date='now')\n",
    "    \n",
    "    # 随机决定订单状态\n",
    "    status = random.choice(statuses)\n",
    "    \n",
    "    # 付款日期：确保非空（已付款状态为下单后1天内，未付款状态为未来1-3天内）\n",
    "    if status in [\"已付款\", \"已发货\", \"已完成\"]:\n",
    "        payment_date = order_time + timedelta(days=random.uniform(0, 1))  # 已付款：下单后1天内\n",
    "    else:\n",
    "        payment_date = datetime.now() + timedelta(days=random.randint(1, 3))  # 未付款：未来1-3天（模拟待付款时效）\n",
    "    \n",
    "    # 发货日期：确保非空（已发货状态为付款后1-3天，未发货状态为付款后4-7天）\n",
    "    if status in [\"已发货\", \"已完成\"]:\n",
    "        shipping_date = payment_date + timedelta(days=random.randint(1, 3))  # 已发货：付款后1-3天\n",
    "    else:\n",
    "        shipping_date = payment_date + timedelta(days=random.randint(4, 7))  # 未发货：付款后4-7天（模拟未发货状态）\n",
    "    \n",
    "    # 生成商品相关信息\n",
    "    category = random.choice(clothing_categories)\n",
    "    color = random.choice(colors)\n",
    "    size = random.choice(sizes)\n",
    "    product_name = f\"{category} {color}\"\n",
    "    color_and_spec = f\"{color}/{size}\"\n",
    "    \n",
    "    # 生成价格相关信息\n",
    "    unit_price = round(random.uniform(59.9, 599.9), 2)\n",
    "    quantity = random.randint(1, 5)\n",
    "    product_amount = round(unit_price * quantity, 2)\n",
    "    discount = round(random.uniform(0.8, 1.0), 2)  # 折扣\n",
    "    payable_amount = round(product_amount * discount, 2)\n",
    "    \n",
    "    # 根据状态决定已付金额\n",
    "    if status in [\"已付款\", \"已发货\", \"已完成\"]:\n",
    "        paid_amount = payable_amount\n",
    "    else:\n",
    "        paid_amount = 0.00\n",
    "    \n",
    "    original_price = round(unit_price * random.uniform(1.1, 1.5), 2)  # 原价高于现价\n",
    "    \n",
    "    # 生成订单号相关信息\n",
    "    internal_order_number = f\"ERP{fake.random_int(1000000, 9999999)}\"\n",
    "    online_order_number = f\"ORD{fake.random_int(10000000, 99999999)}\"\n",
    "    sub_order_number = f\"{internal_order_number}-{random.randint(1, 5)}\"\n",
    "    online_sub_order_number = f\"{online_order_number}-{random.randint(1, 5)}\"\n",
    "    original_online_order_number = online_order_number  # 默认为当前线上订单号\n",
    "    \n",
    "    # 款号和商品编码\n",
    "    spu = f\"SPU{category[0]}{fake.random_int(1000, 9999)}\"\n",
    "    sku = f\"{spu}-{color[0]}{size}\"\n",
    "    \n",
    "    # 随机选择用户ID（有重复）\n",
    "    full_channel_user_id = random.choice(user_ids)\n",
    "    \n",
    "    # 退款相关信息\n",
    "    if status == \"已取消\" or random.random() < 0.05:  # 5%概率有退款\n",
    "        refund_status = random.choice([\"申请中\", \"已退款\", \"拒绝退款\"])\n",
    "        actual_refund_quantity = random.randint(1, quantity) if refund_status == \"已退款\" else 0\n",
    "        registered_quantity = actual_refund_quantity if refund_status != \"无退款\" else 0\n",
    "    else:\n",
    "        refund_status = \"无退款\"\n",
    "        actual_refund_quantity = 0\n",
    "        registered_quantity = 0\n",
    "    \n",
    "    # 是否赠品（低概率）\n",
    "    is_gift = \"是\" if random.random() < 0.02 else \"否\"\n",
    "    if is_gift == \"是\":\n",
    "        unit_price = 0.00\n",
    "        product_amount = 0.00\n",
    "        payable_amount = 0.00\n",
    "        paid_amount = 0.00\n",
    "    \n",
    "    # 组装数据（键名已替换为中文，确保无空值）\n",
    "    record = {\n",
    "        \"自增ID\": i,  # id\n",
    "        \"内部订单号\": internal_order_number,  # internal_order_number\n",
    "        \"线上订单号\": online_order_number,  # online_order_number\n",
    "        \"店铺名称\": random.choice(stores),  # store_name\n",
    "        \"全渠道用户ID\": full_channel_user_id,  # full_channel_user_id\n",
    "        \"发货日期\": shipping_date.strftime(\"%Y-%m-%d %H:%M:%S\"),  # 确保非空\n",
    "        \"付款日期\": payment_date.strftime(\"%Y-%m-%d %H:%M:%S\"),  # 确保非空\n",
    "        \"应付金额\": payable_amount,  # payable_amount\n",
    "        \"已付金额\": paid_amount,  # paid_amount\n",
    "        \"订单状态\": status,  # status\n",
    "        \"收货人\": fake.name(),  # consignee\n",
    "        \"款号\": spu,  # spu\n",
    "        \"下单时间\": order_time.strftime(\"%Y-%m-%d %H:%M:%S\"),  # order_time\n",
    "        \"省份\": fake.province(),  # province\n",
    "        \"城市\": fake.city(),  # city\n",
    "        \"平台站点\": random.choice(platforms),  # platform\n",
    "        \"子订单编号\": sub_order_number,  # sub_order_number\n",
    "        \"线上子订单编号\": online_sub_order_number,  # online_sub_order_number\n",
    "        \"原始线上订单号\": original_online_order_number,  # original_online_order_number\n",
    "        \"商品编码\": sku,  # sku\n",
    "        \"商品数量\": quantity,  # quantity\n",
    "        \"商品单价\": unit_price,  # unit_price\n",
    "        \"商品名称\": product_name,  # product_name\n",
    "        \"颜色及规格\": color_and_spec,  # color_and_spec\n",
    "        \"商品金额\": product_amount,  # product_amount\n",
    "        \"原价\": original_price,  # original_price\n",
    "        \"是否赠品\": is_gift,  # is_gift\n",
    "        \"子订单状态\": random.choice(sub_order_statuses),  # sub_order_status\n",
    "        \"退款状态\": refund_status,  # refund_status\n",
    "        \"登记数量\": registered_quantity,  # registered_quantity\n",
    "        \"实退数量\": actual_refund_quantity  # actual_refund_quantity\n",
    "    }\n",
    "    \n",
    "    data.append(record)\n",
    "\n",
    "# 转换为DataFrame\n",
    "df = pd.DataFrame(data)\n",
    "\n",
    "# 保存到Excel\n",
    "output_file = \"ERP订单数据.xlsx\"\n",
    "df.to_excel(output_file, index=False, engine=\"openpyxl\")\n",
    "\n",
    "print(f\"已成功生成{num_records}条ERP订单数据（发货日期和付款日期均无空值），保存至{output_file}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e8734297-020b-4b00-ac36-10de0c051765",
   "metadata": {},
   "source": [
    "# 二.数据可视化\n",
    "### 参照模板对数据进行可视化，尽可能还原图表类型，风格，视觉效果。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8d57ee67-933a-45fa-bd69-5d55afb593d3",
   "metadata": {},
   "source": [
    "## 图表一 渐变柱形图\n",
    "<span style=\"color:red\">\n",
    "<p>* 数据筛选：从 Excel 的 “店铺名称” 列中，提取含 “旗舰店” 且带数字（1-10）的店铺，排除 “专营店” 等其他类型</p>\n",
    "<p>* 订单统计：按筛选后的店铺名称，统计 “内部订单号” 的数量（即各旗舰店的订单数）。</p>\n",
    "<p>* 生成渐变柱形图</p>\n",
    "</span>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "852e0ec2-b865-4892-a7a0-888371ceac98",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    店铺名称  内部订单号\n",
      "0   旗舰店1     48\n",
      "1  旗舰店10     48\n",
      "2   旗舰店2     54\n",
      "3   旗舰店3     44\n",
      "4   旗舰店4     57\n",
      "5   旗舰店5     60\n",
      "6   旗舰店6     44\n",
      "7   旗舰店7     44\n",
      "8   旗舰店8     48\n",
      "9   旗舰店9     64\n"
     ]
    }
   ],
   "source": [
    "df = pd.read_excel(\"ERP订单数据.xlsx\")\n",
    "shop_names = [f'旗舰店{i}' for i in range(1, 11)]\n",
    "filtered_df = df[df['店铺名称'].isin(shop_names)]\n",
    "shop_order_count = filtered_df.groupby('店铺名称')['内部订单号'].count().reset_index()\n",
    "print(shop_order_count)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "eb87dc29-5dae-4fcd-9811-f4c6118f218a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACESklEQVR4nOzdeZxN9R/H8fedO/fOPvZ9z9j3yBIhW8hediIie5SlUEjWbCWyS0pCSNmX7GSNLImSfWcMZrtzZ35/jLlcsxiZY+b2ez0fD4/c7zn33M/9zDTmfc/3fI8pZ6GKUQIAAAAAAEnOLbkLAAAAAADgv4rQDQAAAACAQQjdAAAAAAAYhNANAAAAAIBBCN0AAAAAABiE0A0AAAAAgEEI3QAAAAAAGITQDQAAAACAQQjdAIBkZ7VYDH8NNzc3mc1mw18nKaVJnSq5S0iQu3v8/fTz9XmGlaRcmTNlSJLjeFit8vT0SJJjAQCeLUI3ACDZfTb2Iy38arICnsv1VMd5vkQRTRw9OM4wWLF8aW1e9Z3q1a72xMf19PTQgjmTNOSDd2QymZ6qxsQwm836adEs/bJqwb/6QKJZk1fVuP4rBlT2QPMmr2rr2kXKlDF9rG3u7mZt/PlbTZnwsdKlTf3YY2XLmsnx98oVy2rO1DEqU6qYJClH9qzysFod299s01QvVy4vi8U90bV6e3s98R8PD+vjD/yQrm+1UbtWTeTl5ekYmzbpE21e9Z1SpfJ7omPF5ZUalbV/208aNqj3Ux8LAPBsJf5fLAAADODv76dqVV/U5SvXdO78pac6Vt7ncqlJg9o6e/6iJn4xx2lbxzeaKVOm9Lp2/aby5snptM3NbJanh1Vms1m/HT4Wu0ZfX1UsX0ZpUqdWVFSU07aSxQvr+RJF4q0pODhEC3/4+Yneh91u1/kLl1S8aEHVrP6SVq7ZlOjnZsyQTsMHv3s/lEZp2U/rJEl1X3lZVSqWVWhYmOz2yASPYbVY5OFp1RfTv9aZsxfi3Ofs+YvKkimDRg3tpw7dBjhtq1W9sjJlTK9cObLpVmBQgq+VI3tWrVwyW/O/W6ZPP5uhTBnTq3rVivrm+x8lSZ9+8oFSp/JT7cbtJUlvd2ipVP5+Kl25gWy2iMf2w8/XR0f2rH3sfo/67fAxNWzROVH7enhY1fnNFvL28tLajdsUEhIqSdq8bbfq1Kqqbm+10ajxXz5xDQ+rVf0l+fp4658zcX89AAApF6EbAJCs2jRvKE8PD+0/eER1X6ma4L5/njqto8dPxrt98bJVerPN62rX6jV9OetbhYaGSZLKli6hlytXkCQt+vqLeJ+/a89BtWjf0/E4V85sqvBCKWW6P0X43r1gtXitnmP790tXqvwLpfTBe111Lzg41vE8PTx0/sLleEN3+9avyWqN+4yq2/2p8F06tFK2LA/OBJtMksnkJqvFXecuXNayn5wD5dVrN9S192BN+3yExo0YqNDQMK1ev0UF8z2nRvVqKTQsTOE2m2N/s5ub0qVNo+DgEIWEhjqm4Xt6eujb73+MN3Tv2nNQK1ZtUKN6tVS5Yllt3bHHsa11s4aSpCEjJioyMuGAf+78RX29YKl6dmmn34/+Idv92sLCw1W4YIAqlC2lgcM+lSSlTuWvLJkz6qfVGxUcHJLgcWOEhYVLkr5esFSjJiQu+P68eLYjOCdGu1avKW2a1Jo+Z4EuX7nmGF+8fLXe7thaHd5opuU/r9fxE6cSfcyHZUifVrWqv6Rr129qwaIf/9UxAADJh9ANAEg2GdKnVbdObSVJrzWsrdca1o5339tBd1SnSftY4yaTSW5ubrLb7ZKkvoNG6vr1WwoNDZPZbJabm0lDB/XWmbMXVLNBW4WFh8d5DHd3syyPTOUuWriAxgx/3/H4hdLF9ULp4o7HC3/4WaFh0cG+/MtNFHTnrtPzF341WWnTxH9ddq+u7ZU6lb/u3osd2GPec66c2dTj7TecarVaLbJaLPpl665YoVuSNm3dpT7vf6KpEz7WZ58O0T/NO2vCF7M14YvZsfbNnjWzdmxYoq++/UFjJk6Lt9YYWbNkckztXvbTOl24dEUXL11RrpzZJEWfaX+x3PPaumOPrt+85RgPvB2k27fvxHnM8ZNnKV3aNLp4+aqyZ8siSYq021WkUH798edfWrx0lSTpxXLPS5I2bt752DpjxHzA0KpZAzV77dVEPcdqsej8hcTNukidyl/dOrXRnbv39OWsb5222e12jRw3RbO+GK3J44aofrNO8Yb54kULqm6tlxUWHj0TISrywYyK4sUKysNq1cVLV9T5zZZxPt9kkkxubjK7ucnDw6oZc7/TjZuBiXoPAABjEboBAMnm40F95OPtpSPHTihb1syq+1oH3bhxy2mfd3t2VJeOrTX44/G6cPFKrGO8WL60FsyeJLvdLntkpOPMqrvZLHd3d836aqGKFMynzj0HatzIgdq8bbd++HGN4/nDBvWWxWLRwKGfxpquHBOQ3uj8nrZs/9UxPm7EQNWvW12SFPGYKc4R9z8MiEtoWLjOnr+oqnXiDlKzvhit20F39N7AEXFud3OLf2mWlWs2aXL+vEqdyv9fn2GNy/yZE2Jde9/9/gcnD6tcsay2rvne8XjilDmaNGVOrP2GDnxHBfMHKCIiQu/17KT06VJLkt5/t6sCb9/R9Ru39O2cSfrq2x8codvNzaQqlco5jmF2c5OXt5c2bt7hmN0QI+YDgnkLlurj0Z8n6j1u/PlbWdwT9yvS8A/fVZrUqTTus5m6FXg71vb1m7ZrzYatql2jsqaMH6ZOPQc6PiB6WP6APOr6VusEX6tEsUIqUaxQoupatHQloRsAUghCNwAgWXR+s6XqvvKyps9ZoDnzF2v9ivn65MN3na4Pfq1hbXXp2FrfLV6hFas2xHmco8f+VKsO78hmi9Di+VM0++tF2rXngNzNZnl6emrtxq06cPiYNm3dqS8nDY81XTrgudzysFrl7m6Wh9Wqew9NW344HNWpWUUvlC7hCG4x05aj9OCMZI2XK+rjwe9q+uxvNW/B0sf2IDQ0LMGF2SpVKKNr12/Gu/1xU7fHfT7zsTU8qbDwcF2/cUsfDh/vNP5GyyaqUO559ew7VBERDz6IyJsnl/q+0yne49kj7IqIiFB4eLgCnsvtODMeGham0NBQuZndFBFhlz0iQlUqlpUkTRg1OM5jlXu5sS6HXnMa8/SIXvG74xvN1PGNZol+n3fu3nvsPrVrVFaDujV07sIlzfr6+3j3e/+jMSpWpICqV62oGZ+PVI++Q2Kd8V6xcoPWrN+isPBw2e0PPjz69JMP1KzJq3pv4AgtWb5aRQrlU8nihbV1x16dO38x0e8HAJB8CN0AgGfu9UZ19P67XXTg0FF9+tkM2WwR+uiTiZo05kP17dVJ4z6fqeZNXtXIof20btM2Dfp4fLzHCrwdpB279ztW+T72x0mt37TdaZ+XXyqvqRM+liT17NJOPbu0i3Wcvw5viXVN98Py53tOHd9ophlzv4u3Fk8PD2XLkumxi4fFiIy0y80t/ttuhYWHKzyO6fBS9Arhnh4eTlPT/Xx9FBwSGueZ1KRij7ArJDRUq9ZtdhqvVuVFSdLaDVudpvCXeb64EjJ8bPQ19vkD8uiHb7/UrcDbSpM6lb6Y/rUCnsutud8sjj5OqWLKkT2rZn21UDPnPQi429Yt0up1WzRpymxdvxH9AYXZbFbGDOkUGhqm0LAwFS5TU1GxXzpBkZGR8vT0kI+3lyLs9lhT47NmyaQRQ/opMjJSAz4cneA14LcCb6vd2331/Vefq8bLFfXjwhnq1W+Y/vjzL8c+4Tab07X2klShbCk1a/Kqtu3cqyXLV0uSypUpqSEfvKMO3QYQugHARRC6AQDPXM7sWXX2/EW91X2AY0r3sp/WqliRAurZpZ2KFy2oKpXKafnP6/TewBGJCpEmt/jPGI8aP1VjJk7T9vWLtWDRCn3+5VeObdM++0TuZrO69v5QSuBuYOs2btO7PTqqRtWK8e4TM5U5sdcDR0Up1mroDwu32RSQN7fOHNse5/ZzFy6pUs2mjse/7Vwp90emRY+eME1fzvomUfUkRlRUlHy8vZwWlJOkPLmyS5Jeb1xH9ogHX69cObM/9pjlXyil6Z+P0NWr1zV7/mKNGtpPpUsV0ztd2ytPruz6aMRENXy1piTp9JnzjsXKUqfyl9Vi0aXLV/T3P+ccx8uSKYN2bFji9Box194nltVicUzfn/ftD/poxETHNn8/X839cqzSp0ujabO/1Y7d+x97vJOnTqvZGz309cwJKpDvOa1YNFNffbNEk6fNi/OseprUqTR2+Ae6cfOW+g0e5RiP+UDD9khABwCkXIRuAMAzN+GL2Zoyc75jinaMHbv3q+Xr9VWlUjnduXtP33y/XBERiTtrG3Omu0qlckqbJrUk6eatQC1Zvtrp2lZPDw+nxc0s7u4Kt0Xo6vUbCR7/+IlT6j3gY23ftU8lixeOcx9fHx9J0SuIJ0ZUVJSiohKeIn71+g3N+XpxrHGLu1nhj1xPPmve9woNC1OEza4c2bOo+Wv1kjyc2SMjlTZNaqcF5h42cki/RB/L399PPTq31VvtmuuPk3+rXef3VKFs9HXbvx0+pk8/m6EBfbro9JnzjtBdMH9ex/MzZEgnSbp85brTcS9fvabq9VrLFhEhmy1CEbYI2SIef3uxh7m5mWR2M8vD00MhIQ8uOUiVyk/fzJyogvnzavuufSpRtJB2bFgim8322FuxSdKMud+pYd0aer5kUTVu8IrmzF8cK3RbLRbNmDxSOXNk1Yy53yl/QB7lD8gjKXq6viQVLZw/zksTjh7/U9cfWRcBAJC8CN0AgGQRE7hTpfJT/drV1ap5QxUpmE979h/SipUb1K51Ey2ZP1W/Hz2hn9ds0vZd+/THn6fiDeEeHtG33ipcIEAZ0qdTwHO5dPHSFce03BitmjVQq2YNnMZ27TkY63i1a1RWhfsLd1WuWFZZ7t82rHqVFx1ndSXJ/ND08NSp/CU5h25zAoudWa0WhYQkfAb21q3biT5T/fC9oMu/UErNX6un8PCkDd0mkynWGXYpenG5po3rKn/JarGml//wzdQ4j+VuNqt4kYJavX6L+g0eJbvdLovFXZu3/aq7d+9p6sxvFB5uU5rU/kqVyk+Bt4NUpFA+x/Mz3g/dZx+ZZh0RYdepv89Ev36pYvrh2ye/R/a94GAVLlMr1niBgOeUI3sWnTj5t7r2+VDfzpqo7FkzJ/q4Z86eV7N2PfTRgF76dd9vTrcYk6ID9xcThqls6RKSotc+iGvF8gF9usR5/I7dB2jDLzsSXQ8AwHiEbgDAM5czR1ZVrVReL1cur4oVysjs5qZftu7WiE+naMeufZKkbxf9qLq1qqpVswYa0OdtffBeV4WFh+vkqdM6e+6iDh35Q9NmP7hFk5+vryRp9MRpWr9puyaPG6rM94Pyw6bO/Mbp1ljzpo93BPaHtWzaUFVfil4h+612zWNtvx0UfY2v1frgNmMZ0qfVzVuBTtfmPnobsof5eHvpzp3HL9j1NOyRSXt9d0IfIjypm7cC1e7tvo6QXrtGZX36yQcaP3mW9h38XVL02fuNP32jf86e14qVG9Tlrdby8vJUSEiocuWIXnTtr9Nn4n2N4PtnqWfM/U7zvv3BadvKH+Zo997fNPyRVc0njx+mHPdvXfaoPfsPqekbPXT7dpCCgu6oVYd3FB5uky0iQhNHD1ajerVUs0Fb/XnqtNPzRg7tp9bNGuryleuy2SL04ScTYh3bx9tLM78YpYrly2jP/kMqW7qEFi1d6biuXZJeqVFZvbt10AdDP9Vvh486xuvWelk9u7SLtQI/ACD5EboBAM/M8MHvqnatKsqYPvoM5dHjf2rSlDla9tM6Xbp81WnfyMhI/bxmk35es0mZMqZXtSovqmqlcnqhdHEVLVxAP6/9xWn/mCnjN+9PJTebzXGe5U2dyl958+R0PPb29oxzWnC3PoNVsUIZzZw8Ss3b9dTuvQ/Oho8bMVC1qr8kyTlU530uV6ypzg+H8kd5e3s7rjWuWL50rFtxeXl6KipVlNq1ahLrucdOnNLe/YfjPbZRzGa3JL2mu1/vzgq32WSz2fRiudIym83KlCG9er79YLG7mV8t1IFDR5UhQzr16tpe5V8oqV+27lbJYoV081ag/jlzPt7jx3xt3Uwmmd1jL1pnMinWuMlkSnAdgZMPBeqHp4bnzJ5Vdrs91gr5UvQHMpJ05er1WNskqVCBAE2Z8LHy5smp9Zu2a8SnU7R59Xe6fuOWjv3x4JZvxYsUlCSdOXfBabxUiSKSuNYbAFIiQjcA4JlZs2GLsmbJpG0792jT1l3q0rG1BvTpEu9U2Uc1bNFZb78zSHly5Yg1pTgm3N24FSgpenXviDiu403s9PKHbx12916w+vTooKgoxbrX9PkLl7Rx8w5FRkaqcMEAXbh4RdWqvKgTJ//Slu2/Kn26NHG+F29vL/n6eCvwdvRK5/XrVFfLpg1i7efn66OPB78ba3zG3O+SJXR7WK1Jdk23JLVr/ZpCQkIVGRmpNKlT6e69YNV5pWr0a1msSpXKT59+NkN/njqt02fO6fbtO6pfp4Z+2bpb5V8opf0HjyR4fPf7gfqt9i30VvsWsba/Ur2yXqleOdb4o9O+H8dicVehAgH66/RZp+n1MTKmT6ew8HDdvP/9+aguHVspb56c+mn1RvUe8LEyZ4w9SyMxIiOfdJ12AIDRCN0AgGdmx+79Tis9x9wO68tZ3zqma8elUoUyqlShjGP/02fOxdqnVPHCuhccrLPnosO4xd09zrOVj04v/3b2JJnNcd+2y98vesr63Xv3VLRQAZV7oaTTlHZJ+mn1Rv20eqNeKF1cadOk1t+nz2rul2PVs+/QBK/Fznb/OuCYM/Mx04Kr1mmpK9fiPhsqSWVLl9C86eNiLUKXGKlT+TtC/r9VvX6bOMfju6b7cfKVeFmS1L71axo2qI9avtlLh4/8IUl6/92uertDS/28ZpOk6B79vHaTmtR/Res3bVOunNk095sl8R5bejATIamml8enQtnn5eXlqV/3/hbn9owZ0iW4wN47/T/Whl926Oc1mxJc0R4A4HoI3QCAZBMTNL9ZuEznL16Odz8PD6sqVSiT4ErmFSuU0aHDxxUZGT2d2N3dXcEhoXJzc1P71q8pJDRMZjezChXI6zQ1OlPGdHJzM6tVs4by8vTQ2g1bHbWkSxt9ljoo6K5++HG1arxcUXVqVo3z9ds0b6TA20FavX6Lyjxf3HHGPT65c0Zfj3z6/tTomOvAQ0JDFfzQWfZHhYZGT0d/0tW4WzdvqNca1FaT1l2f6HlS9Nlis5v5icJ0fMd59N7ikuTp6aGub7XRod+P66/7C6ClTuWvFq/X05r1W5ymj8/5epFavl5fE0YNVnBwiH5YsSbB14y5jVt8C5LVrlFZtWvEPtN9Lzg41lhCOr7RTJIcHxA8Kn36tPr9/ocJ8flp9UbH3+NamTwhpoTudwcASFaEbgBAsnnSM3rx7V8wf17lzZNTP65c7xjz9PRQ0J27sri7a2Df7goJDY1e/bpwfhUpnD/WMfq900lenp7648+/HKE7b56cCg4O0c1bgdq4eaemzvxGe/cfUsXypZ2eWyDfc6pXu5qmzVmgkNBQSXK6rjkuMbfGOvnXP5L0xAtgRSbi9lQx3uv5lnp1ba+Ll67I18c7Vuh9nMoVy2nul2MTte+fv8UdOh/2XLEqTrMQihTMpytXr6to4fw6vHu1jv1xSvb7082nzJjv9NxTf5/Rtp17VaVSOS1aulJBCcyQkKJXf69er7XCwsJjff/Ed6bb3eIuD6tVaVKn0q3A2499P3VfeVlVXyqvI8dOOF37HyNtmtSyWizxXs8dl0fvt54Qk8mkfAG5JSnOSyoAAMmL0A0ASDaJua/xw2LOYj+q4xvNFBkZqaU/PjjrmSF9Wp07f0lh4eEKKFFVUvTZ02JFCmjbzr2O/eq+8rKuX7+pPfsPxTpu6ZJFHaE4LDzcaVp6DE9PD00eN1R37wVr5tyFerX2y7H2Wbt8nmZ/vUiLlq50jL304guKjIzUgd+ir0l2c4s+U5klU0a5xzPdPeZ9SdELgCXEbI5eZbx75zeULUsmHTh0VJ17fvDEgVuS7t0L1qHfjyssPDzer1ne53IqY/p0+nXfb3FeV2w2u8ndbJaXl2es8Lv/tyNq0LyT/P18Ve6FkhrywTuO6d1zp3+qBYt+1BfTv5bNFqGypUuodKlikqQaL1dU0UL5deT4n/HWPnvqGOVOYDG3+M50S9LAYZ/q2+9/jPe5klS8aEF9+skHCrfZNHDYuDj3yZY1kyTp8hOE7pgz9LE89IU3mUxa9PUXKlGskDysVtlsEXFeegEASF6EbgBAsokJmm1aNE7wmu4Xni8e77aA53KpYb2a2rZzr85duKTXGtZW25ZNlCdXDm3cvNOxX+pU/low9zPly5tbr7XuqsNH/lC6tKk1fPC7SpPaX1/O+lbjJ89yBPucObIqIG9uzZr3veMYmTNlULEiBVSsSAEFB4fI09NDc6aOUYF8z6lXv2FO10vHZKMM6dOqYP68evWVao7QXbliWeUPyKOjx/90nEl1u38rruULpyeudwkEc0nKF5BHkpQtSyYt+2mt+g8e7ZjC7uPtpdKliikkNFR1a0V/SBDfBxqS9Ou+39SgeacEX2/CqMHRvX/r3X89Dd3T00P169RQjmxZNOurhdqweYdaN2+k0iWLyW6P1NsdWqnvO5104eJlfTh8gsYOf18L5n6mjt0HxLuoXOeeA3X33j1dvXYj1myCgzt+1pbtv6r3gOFO4+7uZnl5eioigRXMJalRvZoaObSfvDw91W/wKB36/Xisfby8PNWmeSNJ0SuOJ1Z8oTvmAxmzm5uioqK04ZcdKpg/r/buP6yvvl2iG/fXCAAApByEbgBAsolZwKzrW62faP+HjR3+vtzNZo37fKYk6bfDxzTm4/f1y9ZdjsBcqngRTR43RL6+PmrX+T3HQl03bgaqXtOOmjBykHq8/YaKFs6v7u9+pLv3gtXy9eiVxDdteRDcQ0JDNePzkXJzc9Oa9Vu09NsvVaRQfs36aqFjanvM9djvdOugMqX2qWiRApKkjZt3OI7TvXNbSdJPqx9MxbbeX/Crx3tDdDOBKc2FCwRocP8eCd6KTJKaN4m+bv3LWd9q9IQvnbaFhIZpzMcDlDVLJsfY0QTOFidGTD1u5ie7j7eHh1UVyj6vRvVqqk7Nqgq6e1dd+3yoVfdvCbdrz0FVrlhWPy+ZrSIF82n7rn3q2Xeobt4KlN1u14RRg7Rw7uf65vvlmjxtnq7fuCVJypMrh9KlTa2Q0FB5engoZ/assV7b7GaWr4+P0y3knN+TVZ4eHvrn7HmnaeYVK5RRz85vqEK55xUaFqbeA4Y7XdogRV9ysGLRTHl6eEiSbt++o9XrNie6L0ePn1SuwpVijccsDBcz/XzWvO81fc6CRB8XAPDsEboBAMnGw2qVJFWs8XqCC6n17t5Bfbp3kIeHNda2dweO0CvVKzuC9F+nz+r5l+o7rvX19/PVjMkjdC84RE1addHf/zhPv710+aradHpXI4f0VZ2aVZUzR1Yd++OU9h38XafPnHO6ndjt23c0aepc/Xb4mOx2u2ZPHaOlK9Zo+NgvHPts+GWHdu7er9LPF1OFsqUUGRmprTv26PulPzv2GTRsnD4e3EeLHhqLeW97DxxO8HZVMdeKx/QuPr36DVWt6i/FuiZaij6rvX33Pr1YrrSO/XFSa9Zv0aonCIRxSZM6+j7pnh4eCgkJTfTzRnzUV00b19X5i5c17vOZmr9wmWOxOEkqWriApk4crvDwcL0/ZKy+W7zCse3Hlet19dp1TRz9oQKey+10m7fOb7ZUk4avKDzcFu91zvZIu0qXKqol30yNc7vVapXValGvvkO1ev0Wx3iGdGlUtkwJHf3jpN59/xP98edfsZ574uTf2rZjr/Lkyq6tO/fqq2+XPNE13fHx9IwO8Z73v18Sup84ACBlMOUsVJH7UgAAkkXGDOmUOpW//v7nbIIrkz+tXDmz6VZg0GMX3cqcKYNT4H3cQlqlSxbVoSPHk6R2b28veVitCrwd9H91yygvL0+VKVVM23fti/d9FytSQP+cOa87d+/FuT11Kn9FKUq3byf89U1KJYsX1uEjfyQ4LR8AAInQDQAAAACAYZ7swisAAAAAAJBohG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIP/3odvXxzu5SwAAAAAA/Ef9X4duXx9vHd27juANAAAAADDE/3XoBgAAAADASIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAIBLMZlMyV0CAABAohG6AQBxSpXKT1aLxWksa5ZMKloof6Ke/92cz1S7RuUkq8fH20u/rPpOTRq8kmTHNJvNSXKcapUraPpnI2J9IDDzi1F6/92uSfIaiVWxQhnVeLniM33N+Hh6eih/QB55WK1PfazEfK2S6uvp5+ujH76Zqrx5cjqNN3y1phZ9/YWyZsmU4PM9rFb5+njHue1xzwUA/Pe4J3cBAICUafYXY7T/t981avyXjrFO7VuoeJECat6+pyIi7I5xT08PSVJoaJgkyd/PVy+WL62vv1vq2Cdd2tSaNWVMnK/V5/3h+ufM+QTruRccohs3bqlpo7r64cc1jnGTySSr1SKbLUKRkZGJfn91albRO93e1Bud3tPV6zfk7++n7FkzKTzcpqioqFj7u7m5yWJx15mzF3QvOMRp25Hjf+qz8qXV/LV6WrjkJ0lSjuxZVaNqRe369UCCdWTNkkkTRg1+bL2n/vpHg4ePT3CfvHlyatKYD7Vg0Y/a8MuOxx4zPnly5dDKH2ZrzteLNe7zmY/df/zIQQoODtGHn0xwGi9cIEDLvpuuGg3a6uSp04l67akTh2vl2l+0cs0mx5jJZNIvKxdo6sz5WvjDz3E+L22a1Pp+3mRNnDJHq9b+IkkqUiifwm0RirTb43yOu7u7goNDdO7CJafxO3fv6cq1Gxrz8ft6vW03x3irZg3k7eWlS5evJvgeSpUoonkzxqlRi7d1/MQpx3iunNn0y8oF6tF3qKNGAMB/H6EbABCnWfMWaszw9/XZl18pODhE+QLyqFWzBgoODtHeLT867Ws2mzVkxEQt+2mdFsyZpIrly0iSpn02QpJ06Pfjat+ln54vUURvdu2vsPBwSZLF3V3zpo+T2c154lWVSuX09Yz4A+aZY9tjjdVr2lG/Hz0hSSqQ7zkN6PO2ypctpeDgUC1ZvlrjJ8+UzRbh2P/I8ZPy8/PVd3M/U7N2PVS2dAl9Pm6owsLCHeHdw8Mqs5tZoWFhcnMzyWqxqnXH3vp1329Or3312g1NmDxbeiist2raQH//c07zFixVQtxMJlUoW0pV67TU3Xv34tyn85stVaxwgQSPU6p4Ec34YqQypk+nHp3fUI/Ob8Tap9/g0Vq6Yk0cz3YWEREhH2/vRH+I4efnIze32NP+w+/322azJeo4kvTX32c0YdQgnTlzXkeO/ylJKlu6hLJny6z9h47G+7xbgbd16Pfj+nzsEEXa7VqzYau+m/u5LO7uskVE1+Hm5iY/Xx/duXtPJpNJ7mazVqzaoH6DR8U63piJ09SrS3v5+njr7r1g5c2TU2VLl1Czdj3i/FDmYQXy5dHNm4FOgVuSXqrwgu7eC9bmbbsTfL6bm5sWzJ6kJT+u1pLlq522Zc+aWZ989J7KlSkpN7Obtu7Yo76DRur27TsJHvNhS7/9UqVLFXMamzrzG42ZOE358ubW7CljdO7CJXXo1l9hYeHy9vZSnZpVnD7sAgAkHqEbAOCkbYvG8vLylN1u19xvlqh1s4a6cOmKunZsrU2bd2regqXas/+QIiMjlT5dGhUrUkC/bH0QIsLDbfps6lxNm7NAJkktmzZQ7RpVFHH/bOPuvQeVNnUq3QsOUfD9M8YRj5yJjDlj/kKVhrp7L9gx7u3lqbRpUuvCxcuKiT3u7u7ysFp0K/C2JClzpgxaPH+Kdu7er/Zv91OunNk0uH8PZc6UXr0HDHcc69z5i2r5Zi+t+H6mBvXroXc/+ET5SrzsVEfv7h30wvPF1bpj7zh7FfBcLm38+VunsTHD33d6/PfvWyRJi5etUt9BI2MdI+a9L/tuWrxhzsvTU/t/OxLnNqvForfaN1ePt9/Qx6M+15Yde5zOxPr5+mjR11N05PiJRAVuSY46UqfyjzXFWooOheE2m86cvSBJirRHym6PHdBjwnbEQx92WC0W9enRUZOnz3N8/R824YvZKlIon/IF5HGE7sb1a2nl2l8SPFseFRWlvoNGys/XR2M/+UA79xxU8fJ1nPbJnjWzdmxYohr12+jylWtxHmf5whkqVbyw4/HrjZyPsWT+VMffcxWu5LTNz9dHPj7eKlakoH7d95syZ8ogSboddEchIaFqXL+W/vr7jF6p/pLT81av3+L4npekIR/0UoVyz2vJj86B28Nq1dxpn8rNzU2jJ3wpX18f9erSXqOH9lfXPh/G25uHmUwmFSyQVwM+HK2jf5x0jF+9dkOS9Gbbplq/aZuKFC6gmi9X0s9rNqlpozras/9woo4PAIjNJUL3643qaPzIQbHG3xs4QoeP/KFxIwYqd87sWvjDTxo5bmocRwAAJFZYeLgyZUyvN1o20fS5C+Tl6SEvTw8tXrZKh4/+oR8XztBzxapIkvIH5NGoof1VqVZTmUwm2WwRCrfZZLNFqH/vzrp85bpCQkKig+VDgXLEkL4KvB2k/oNHx1uDJAU/FMwlqXqVF/XF+GEqWLqGQkJC43zum21e1917werZb6hstgjt2X9IZjc3jRn+vkaN/1JXrl537Hv23EW1eetdnf7n7L/rVVh0nfWbveUIuh3aNlO5MiX09jsP/t0aPWxAvMcwm6PP8ld+pbmC7tyNc5/e3TuofJmSscbd3c1a+NXnSpMmtVq076Xg4BD9snKBuvX5UJu27lLaNKk14/ORunb9hgYO/fSJ31+71q+pXevX4ty2fdc+x4cR8X1Y8Oh4wfx5NWH0YBXM95zOnLvgmIof48/fNslkMikyMlIVK5TR6I/7O20/cXCjPD08VLNBW/0ZTwDv/f5w5Q/Io6CgxJ/5fVhYWJhmzP1OM+Z+J0nKmCGdVv0w1+lrXKlCGU0a81Gs53Z5q7XTDIPG9aPXHxjw0Rj9uvc3lXm+uI7+cVId2jaTJFks7ipUIEA7djV0hO5JYz5UqRJFHB8iPaxx/Vry9fHWK43bO96fp4eHurzVWhaLu9NMjvg8lzuHfLy9tWbDVgXeDoq1PUe2LJo+Z4FCw8OVI3tWSVL+fM89dsYGACB+LhG6f1y5Xus2bnM89vb20qof5ujAb0f09Yzx2rJjj3r0HaJhA3uraeO6WrxsVTJWCwCubdHSlSpUIECN6tfSlBnzHeN1a1XVvOnjJEm7f4n+Bdzi7i5/P1/t3fKjPh79uZb9tM6x/7XrN1Wh7PPatCX2tcXu7u766+8z8dYQM6350dAWGhYdTNKmSSW7v59j3OLurpu3AnUvOETFixTU7j0HnQLIqfuvlT1rZl25el05smdVRESEoqKidP3GTYXeD89PKjIqus6bNwN17fpNSdEfFITbIhyPJSk8PP7ju7mZdervM1r23fQEX+vYQ2clY0RE2NWr3zDduBXo+BBi6MhJmjpxuMZOmq4uHVtrz/5Deu+DEYkKZI+aOGWOJk2ZE0fNbrK4O/8K4ePtpexZM8tkMslicVfkQ1+7zJky6O0OrdSyaQNt2f6r+gwYrhMn/4513PBwm97q/r527z0YZz2ZM2XQr78si/Ve0qZJLS8vD8fZ9r9P/7sPUSQpKjJK94JDHF+/mMXZHv4a3w6K+8OR8HCbdu05qBbtezrGtq9frPBwmzq92UIHDx9ToxadHdty5siqbWsXKfSh74+MGdLptdZdtXzhjFjHX7dpu3btPej0gcKtwNtyN5vl5pa4tXGLFi6gs+cuxhm4peivbVRUlKIio2Q2u+nlyuUfOx0eAJAwlwjdNluEbLYH/8C1bdlYazZsVUDe3PLz89XwMZMVGhqmsZNmaPjgdwndAPCUzPdDVczU4ms3bmnVus06cOiotqxZqBcqN5QklXm+uCaN+VCVajaNdYxdvx5Q8aKF4jy+t5enLsUzvVd6ELYjHwndMaFq54YfYj2na+/BWrVus+yRkUqbJpXTtvz5npMkx2uu+H6G0qZJ7dj+ct2W+vufc/HWE5+YenZsWBJr26PXnT/6b5O7u1luJjedO39R1eu1TtTrububZbFYnM7yn7942Wmf02fO63bQHXXr1FYrVm3Qnyf/VvgTXFOdGJGRkY7ZCDFeqVFZ1aq+KDc3N1ktFp36+4y69o5eIO67rz7Xpi271KR1Fx0+8ke8x42ISNwHA4/u1/Wt1ur8ZkvH4ykz52vsxIQ/xIiPPTJSfbp3UJ/uHZzG4/oaPyoyjin2klSoQF41b/KqWnfs4zQe88FFWNiDqeWtO/aJd+bAzVuBunkr0Gms6kvldeTYn45ZF49TrEgBWa0WbVq5QNmyZtI/Z85r2uxvHR+YXbt+Q8/lzqncubJr2449ql61oj4cPuExRwUAJMQlQvfDPKxWvdmmqRq16KzXGtXRwUNHHVOyjp84pXwBueN9rtVikdX64PY3PvHczgMA/t95enoodSp/jRjST/kDcmv85Fn69vvoxdM8PTy0d2v03y3u7k7XXKdO5S93s1kWi7v+OPm3+rw/XK2aNpAkmR5aaMvfz9dxDakkuZmcz9J5eESvhh5fiHn0Wlp3d7Nj9vqefb+pd/cOql2jstZs2KrcubKrV5d2OnLshC5euiJJKv9yE4WFhzuu8f03Z4GlB/cMr1G/jS7cP3aXDq1Uodzzavd2X8d+E0fHvt62Ub1ajkun7Ha7I2g5zjTGEbzc3d116fJVla/WRJLk5eWp/AF5lD8gj0qXLKqqL5WXm5ub5i34QTt3H9C0zz5R7pzZtHzleqdrhh/l7e3l9NjLy1NS9PTnR7dFRUXFObV/6Yq1Ttesm81mx4c2zd/ooQMJLIIWw2KxKHUqP2VInzbO7enSppYU3YeHjZ00XaMnTJPdbtfCryY/0cJtjzKZpC9mfO2Y5ZEpQ3ptXv2d09e4aqVy+nLSJ4k+5h9//qWO3d+Xv7+vPuzfQ8PHfiEp+v1K0WfIYzxukbaHlXm+uKpUKqeefYcm+jklihVSaFiYps6cr8tXrqlhvZqaNOYjXb12Qzt279fi5as1Z+oY3bwZqPnfLZOPj/cT1QQAiM3lQnfDejV18PBRnb94WX6+Pjp33vk2H3a7Xf7+fnFey9Wtc9tYn1wDAGLz8/PRqb//UYv2PTVj8kins2ihYWGxznTHmDvtUz1fooiqV62od7q96Rjfteeg457fJklZsmR0WuzL3eL8z5H3/dD36NnU+Dx8+7LZXy/SSxXLavrnIxV4O0j+fr5yc3PT+MmzHPs8elxbIs+wPipm1fWw8HBHjyLs9ugzwQ/1LCqOVcCXrlirZT+t05iPB+jM2QuaPH2eJGnyuKHad+CwFi1bJZvN5vTeTCaT073T3Uwmff7pEEVFRWnztt3q8/5w/brvkKpWKqe508YqTepUSpMmlQ7tcj7L3uO9IVq/6cGZ+N92rozzXtpxrYJ++sw5Va3TMta+j7I/tDjewx+wJMRicdf0z2MvNhfXfg979EOTCFvctwhLDDc3s+wRdsfXL9wW/d+Hv8YJzRyoULZUrFkOkZGR2rxttypXLKs32zbVN9//qNNnzsnd3V3htrhvUfc4Hh5WjR3+vvYdOKyfVm9M9PMGDv1UN24+OGO+fdc+5c6ZXW1bNNaO3fu1Y9c+vVj9Nd0LDtG7PTpq8fLVWr30K0lSu7ffS/TXEgDwgMuF7tbNGmri/evLIiLsMsn5F6ewsHB5eXrEGbqnzpivWV8tdDz28fHWns3LDa0XAFxRjmxZdf3GLUmSu9nsNJ3XarFo1dK5kh6E4xivt+mmmZNHavfe3+Tp6aFVa39RxfKlVafWy46zkzlzZJOPt7ca1K2hVet+UWhYmNzvXzcbI13aNI5bIP24cIZKPrSatBR76naP94Y4gse94BA1bdtd5V8opezZMuu9nm8pLDxcS1esfdq2xBJzpnLb2kWxtsWsWh7j0enlD9+Oq1unNurwRvQUfR8fb+07cFhrl81T5swZdO/+TIJU/n5694NPtPzn9Y7n3QsO0SuN2jnOYmdIn1YTRw/Wq69U0xczvtZnU+c6BbovJw5Xntw5nAK3FP1v57IVax3/vsZn+IfvKlOG9Anu8zTyl6zm9LhJg9rauGWH0+2wPD09Ejxr/7SsFne90+1Npw+NpLi/xnE58NsRp5XEly2Y5vj71h179Pc/Z9X5zZb6YOhYeVgtTme5n8SQD95Rxgzp1L5L3ycK7Sf/+ifW2L4Dv+vVVx6s3H/jZqD8/f1kt0eqdvXKOnHyL0lS08Z1ndZ5AAAkjkuF7lw5syl3ruzavmuvJCnwdpAK5MvjtI+Pj3e80wTDbbYkv64NAP6LKpYv7Vjoyt3dXRERdlktFsetouo2iQ4kMWe6YxbWCgsPl5enp+7eC1aBfM+pTYtGOn3/WulLl68qf8lqatm0vk79fUY9u7TTr/t+U4FS1WO9ftYsGXXlWvQq4zZbhNNq0g9zc3PTns3L4wwuu/ceVMmwwsqaJZN6vDfE6cxrUjl95lysoNi1Uxu9WO55tX3rXadxe2T8rz915jdOZ7olqdu7H2nKhGGqUruF/P39tGP9Ym3cvDPWc0NDw1SoQIDatWqiBq/W0JFjf6p5ux7q2K65ShQrpN8OH5MUvZJ29Zcr6rXWXWMdIyoqevGw+G6j9fBr2RN57+706dIkar8YyxfO0LjPZihN6lTq905nVa7dXC88X1xtmjdUyzffUVh4uEwmk5YtmK7V6zfr8y+/eqLjJ1bz9j2dLnfIlCm9tq1dpJfrttSFi1ce+/ywcJtTHx/t18IlP6tXl/YaMmKiPD094l2FPyFNGtRW62YN1eO9ITp77mKin2exuKv8C6W0bedep/HUqfzl4eE806F5k1e1aOlKvd2hpXbvOSiZTCoRzxoNAICEuVTorle7mjZu3umYanf4yHG1eL2eY3v2rJnlYbXGuyInAODxzGazXixfWovun5m1Wq2KiIjQtM8+UfWqFRUREaG/Dm92es5fhzfr132H1KJ9T2XKlEE37i+81r71a47QLUV/+Nm2ZRPN/nqRRg3tp5B4zlgWK1xAp+6fkbPZbE6rST9aa8w+cenR+Q0d+v14oqbf5syRVa++Uk1fzvrmsftK0atAh4WFOZ2xlqKvV/ewWpU9W+ZYz3F3d1fg7SCn25ZJ0pttX1ej+rUkSZkypte+A4d15NgJBQYGqepL5ZUvb26t2bBFd+7ei7MWL08P5cyRVV3eGaytO/ZIil7Y7OsZ49XqzXeUM2c2jR7WXx8Nn6Dfj55I1Pv7tzJnyqA+3TuoWtUX1bpD7zj3SZ8ujWMmhSRlzZJJpYoX1pmzF5Q6lb/c7t9GbejISVr5w2y1adFIs79epKioKH04fLy+mTVRdrs9wbOubm5u+nBAT40aNzVRH7jnyJ5VXp4esT6cSZ8u+vryLJkzOq7hd7yG2Sw3kynOldjj88OPa7Ru0zaF22zy8vLU3Xtxf03jU65MSY3+uL/mzF/8RNPKJcnLy0tzvhyr9m/31Y7d+yVF31u8RrWK2n/gd8d+bm5uypUjm06fuf//7iPvGwDwZFwqdFepVM5pet6v+w7Jz9dXTRrU1tIVa9S1Uxtt37Uv1i9AAIDEa/hqTUVERGj7zr1ydzcrc6b0CrdF6O13Bslmi1D9OtW1e+9BXbt+U3nz5FTdWi9r6qxv5OZmkp+vj/Lkyq6jx//U+YuXtXHzDrVr1cRx7M5vtpTJZNKipT9r1NB+jvGeb7fT78dOaPO23XJzc1O5F0rqi+lfJ7rmKMWeXluqeBHVrFZJzd7o8djnFy6YT2M+7q8/T/2T6NC9dMGXCg+3xfo3x8Nqlbu7OdYtwMxms6xWi6bN+tbp+nJJWrJ8tX5avVFZMmdU905t1eL1Brpw6YoGDx+vLycOl6enp5q07hJvLQcOHVWrRwLuyHFT5e/nq8Xzp8hkMun9IWO17Kf4p9h7eXrGu4CZ4715xL7uO2bc29tLn3z4npo2qavLV65p7MTpsUJqjIF9u6tIoXx6pVE7SVKdmlV09I+TOnfhkgoVDHAsoBcWHq5WHXo7riOuW6uqfj96Qr0HfKypE4fryLE/tWX7r3HW8+WkT1SpQhl9+/1yxy3jEtLz7Tf0au1qsUJ3zHuY/vlIp691zPX112/eUsUarz94batFmTNlcDw2P3Irr1uBtx334E6dyl937wYrsVKl8tOUCR/r8uVrWrFyg4oVKeDY9vfps7oXHKKMGdIpfbo0OvbHqVjPDwq6ox9/Xq8Jowbry1nfKNwWoTdaNpa/r6/T/2+vVH9JazdulSRduHhFL5Z9XpJ04lTiP1wAADzgMqHbw8OqksUL64MhYx1jdrtdHwwdq8/HDtHAvt1kNrupWbueCRwFAJAQfz9f9X2nk75ZuFzu7mb98tN3Spcmtc6cPS+bLUKd32ypXl3b690PPtG6jduUKWN6tW3ZWNWqVNDbvQapRPFCun7jpuM2Vm+0bKI2LRrr2vUbqlOzinq8/YZavvmOY8ZSvry5denyFbVoWl/mZWZt3rZbjevXUto0qR33BnYzu8V5C6eHWS2xw+CAd7tozYat+nXfb/E+LyZETvvsE234ZYf6vD/cabuXp0e8z310WnmMXl3a6cXyZZzu1RwXf38/LZo3WRnSp9PZcxfk7e2lE3/+LZPJpJ/XbNSGX3boleqVFW6L0ImTxzV6WH8tWLRCO389EOu2UU51BeRR2dIlVPeVqipXpqQ2btmpT8Z+keA0ZLPZrFbNGqhVswYJ1iwp1i2/LBZ3lSlVXKlS+en0mXMaOPRTLftpnSIjI5UrZzZJ0WfdY76eqfz9VKNqRW3b9WCKc6umDfTDijWSomct+Pv7ys/XR3fu3nMEbn9/Pw0b1FtLlq/RmInT1LH7gFjTpKXor2nnDi1182agmrbt5hS4vR5Zg+Bh/T8crf4fjo41niVzRu3etFS1G7WLdXu2R7mZ3fR8yaL69ZdlzuPx3EO7YP68uh3HGjTxKV+mlOODkeULnT/Uad6up3bvPahWzRqqQ9umKl6+TpzH+PCTCfpoQC+92+MtuZnd9Ove39T93Y/010P3Ni9SKL/GfT5TkrR4+Sp9Ne1TRUVJn3z6RaJrBQA84DKhOywsPM5fcNZt3KYqdVqoeNGC2n/wSIK/iAAAEubr66Pdew5qysz5Cg0N07vvf6K/T5/V1es3NLh/D9WvU13N3ujuOIu289cDeqVRO82eMlrDBvVWWHi4436/UvQ6G/kD8igqKkpjP/lAb3V/X0eORU9vXrN+iz758F25u7vr7LmLWrAo+jZkHh4eWrdpmyMEWK1Wp1s4Pczs5qYje9Y63Q4yxuNCryTVrPaSJGn+d8s0fMxkx/j773ZVyeKFVap4YW3aEvs66oS4u7vLze3x03GDgu6ofZd+unL1utNCWK/UqCy7PVIfvd9L2bJkUov2PXX12g2VKVVMrZo1VPZsWTRt9reSogPvyKH9lCFdWmXJnFE5smeRj7e3Tv19RmvWb9EHQz/VmbMXHluLp4dV8xcue+y9rccOf1+FC+ZzGrPZIjTjq+90716Ivv5uqdOZ4rPnLmr9pu364L1u+uj9Xo7xU3+f0bjPZjoevzdopC7cD7Snz5xXZGSkDu9e7TQt3M3NTSf+/Fuz5kUviPrL1t2x6sueNbMKFwjQmbMX1OatPo5p/OXKlFSfHh2VPVtm2e12x+J0iRGzAKApnuD8MKvVol17Djp9721fv1jWh1aGL1OqmJq/Xk+ZMqRXxfKlNWjYuDiPValm01hjazdujXW7vEdNmjJHkxJYEC8kJFQfDB2rD4aOjXefmMAtSZevXFPtxu0TfE0AQMJMOQtV/L+9+aKvj7eO7l2nIi/UcrrPLAAgNn9/P3larbp6PfYtgzw8rI6F1DysVsfP1PwBeZQ+XRrtPXBYuXNmj3Pl5Mfx9vaKvoVTIm8f9iQCnsulenWqxwoprZs3VKf2LXTsj1OaMHlWoqYnx/jo/V56vmRRNWrROanLjVPLpg1UvEhBnbtwUSf/+ke/HT4W5/Xv/w9iruOePG2e04fw3t5e2rZ2kU6eOq2lP63VoqUrE33MwgUDtHrpV6per/Vjvw+KFMqnNKlTafuufY6xYkUK6MqV647/b3y8vTTzi1E6cfK01qzfkuBMDADAfwOhm9ANAAAAADDI4+dKAQAAAACAf4XQDQAAAACAQQjdAAAAAAAYhNANAAAAAIBBCN0AAAAAABiE0A0AAAAAgEEI3QAAAAAAGITQDQAAAACAQQjdAAAAAAAYhNANAAAAAIBBCN0AAAAAXN6APl00e8qYOLfNmz5erzeq84wrAqIRugEAAAC4tPwBedS2ZWMNG/1ZrG2N6tVU1ZfKJUNVQDRCNwAAAACXNmpoP835epHOnrvoNJ4qlZ8G9e+hU3+fSabKAEI3AAAAABfWsmkDFS6YT+cuXFK1Ki/K3d3s2Da4fw+t3bBVBw8dTcYK8f+O0A0AAADAJXl7e6lvr046ffa8smTKoE7tmmvx11PkYbWqQtlSqli+jEaP/zK5y8T/OffkLgAAAAAA/o3aNarI28tTLd/spdu372jKzG+0bvk8tWzWQO1avabBw8bp7r3g5C4T/+c40w0AAADAJWXJnEG/HT6m27fvSJLsdruO//mXMmZIp8NHjmvT1l3JXCHAmW4AAAAALuripavy9PRwGsuWNbPq16mue8HBOrx7tSTJy8tT9WpXU8lihTV4+PjkKBX/xwjdAAAAAFzSpq07NWxQb7Vu3lAbN+9U7ZpVVLhggF5r002XL1917DeoX3cdPHxMi5etSsZq8f+K0A0AAADAJd2+fUftOvfV4P7d9WH/nrp2/aZ69h2qfQcOO+13LzhEN28F6lbg7WSqFP/PTDkLVYxK7iKSi6+Pt47uXaciL9RigQUAAAAAQJJjITUAAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAzintwFAAAAAPj/kbf2l8ldQpL6a03X5C4BKRxnugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAMNiAPl00e8oYx+P8AXm04vuZOrxrtQb27ZaMlQEAAKMRugEAMFD+gDxq27Kxho3+TJJktVg0Z+oY/X7shOo166h8eXOraeO6yVwlAAAwCqEbAAADjRraT3O+XqSz5y5KkqpWLi8/P18NHzNZZ89d1NhJM9S8Sb1krhIAABiF0A0AgEFaNm2gwgXz6dyFS6pW5UW5u5tVqECADh46qtDQMEnS8ROnlC8gd/IWCgAADEPoBgDAAN7eXurbq5NOnz2vLJkyqFO75lr89RT5+fro3PlLTvva7Xb5+/slU6UAAMBIhG4AAAxQu0YVeXt5quWbvfT5tHlq0+ld+fv5qlnjVxUeHu60b1hYuLw8PZKpUgAAYCRCNwAABsiSOYN+O3xMt2/fkRR9Nvv4n3/Jw8OqtGlTO+3r4+Mtmy0iGaoEAABGI3QDAGCAi5euyvORs9fZsmbWJ2O/UKkSRRxj2bNmlofVqsDbQc+6RAAA8AwQugEAMMCmrTuV97lcat28oTJnyqD2bV5X4YIB2rpzj/x8fdWkQW1JUtdObbR91z5FRkYmc8UAAMAI7sldAAAA/0W3b99Ru859Nbh/d33Yv6euXb+pnn2H6szZC/pg6Fh9PnaIBvbtJrPZTc3a9UzucgEAgEEI3QAAGOTg4aN6rU23WOPrNm5TlTotVLxoQe0/eEQ3bwU+++IAAMAzQegGACAZXLl6Xes3bU/uMgAAgMG4phsAAAAAAIO4VOge0KeLZk8Z43icPyCPVnw/U4d3rdbAvrGn7wEAAAAAkJxcJnTnD8ijti0ba9jozyRJVotFc6aO0e/HTqhes47Klze3mjaum8xVAgAAAADwgMuE7lFD+2nO14t09txFSVLVyuXl5+er4WMm6+y5ixo7aYaaN6mXzFUCAAAAAPCAS4Tulk0bqHDBfDp34ZKqVXlR7u5mFSoQoIOHjio0NEySdPzEKeULyJ28hQIAAAAA8JAUH7q9vb3Ut1cnnT57XlkyZVCnds21+Osp8vP10bnzl5z2tdvt8vf3i/dYVotFvj7ejj8+Pt5Glw8AAAAA+D+W4m8ZVrtGFXl7earlm710+/YdTZn5jdYtn6dmjV/V4mUrnfYNCwuXl6eHgoLuxHmsbp3bqk/3Ds+ibABwGcMG9Vb71q87Hv9z9rwmT5un8SMHxdr3vYEjtGT56mdZ3jPTpv8PyV1Ckvpm7GvJXQIAAJALhO4smTPot8PHdPt2dJC22+06/udfyp4ti9KmTe20r4+Pt2y2iHiPNXXGfM36aqHT/ns2LzeibABwGcUKF1D7Ln21/+ARSdE/Z8NtNq3buM2xj7e3l1b9MEe/7juUXGUCAAC4pBQfui9euipPTw+nsWxZM+uTsV+oY7tmjrHsWTPLw2pV4O2geI8VbrMp3GYzrFYAcDVms1n58z2nX/cdUnBwiNM2m+2u4+9tWzbWmg1bde78xWddIgAAgEtL8dd0b9q6U3mfy6XWzRsqc6YMat/mdRUuGKCtO/fIz9dXTRrUliR17dRG23ftU2RkZDJXDACuo1D+vDKZTFq9dK5OHNioedPHK2uWTE77eFiterNNU02dMT+ZqgQAAHBdKT503759R+0691WT+q9o86rv1LFtM/XsO1Rnzl7QB0PHauSQvtq3dYXq1qqq0ROnJXe5AOBSAvLm0p+nTqtn36GqUb+NIiIiNGpoP6d9GtarqYOHj+r8xcvJVCUAAIDrSvHTyyXp4OGjeq1Nt1jj6zZuU5U6LVS8aEHtP3hEN28FPvviAMCFLf95vZb/vN7x+KMRE7Rt7SL5+njr7r1gSVLrZg01ccqc5CoRAADApblE6E7IlavXtX7T9uQuAwD+E4KC7spsNitjhnS6ey9YuXJmU+5c2bV9197kLg0AAMAlpfjp5QAA43zYv4derV3N8bh4sUKy2+26ePmqJKle7WrauHmnIiLsyVUiAACAS3P5M90AgH/v6B+n1O+dTrp27Ybc3c36eGBvLVm+WqGhYZKkKpXKafGyVclcJQAAgOsidAPA/7GlK9YoIG8uzfpitO4GB2vthq0aO2m6JMnDw6qSxQvrgyFjk7lKAAAA10XoBoD/c2MnTtfYidNjjYeFhSt/yWpxPAMAAACJxTXdAAAAAAAYhNANAAAAAIBBCN0AAAAAABiE0A0AAAAAgEEI3QAAAAAAGITQDQAAAACAQQjdAAAAAAAYhPt0A0lo2KDeat/6dcfjf86eV5XaLZz2mTd9vH5avUFLlq9+1uXhP6LbsJ+Su4QkNXVI/eQuAQAAwDCEbiAJFStcQO279NX+g0ckSXa73Wl7o3o1VfWlcvpp9YbkKA8AAADAM0boBpKI2WxW/nzP6dd9hxQcHBJre6pUfhrUv4dO/X0mGaoDAAAAkBy4phtIIoXy55XJZNLqpXN14sBGzZs+XlmzZHJsH9y/h9Zu2KqDh44mY5UAAAAAniVCN5BEAvLm0p+nTqtn36GqUb+NIiIiNGpoP0lShbKlVLF8GY0e/2UyVwkAAADgWWJ6OZBElv+8Xst/Xu94/NGICdq2dpF8fbw1cmh/DR42TnfvBSdjhQAAAACeNc50AwYJCrors9mskUP76/CR49q0dVdylwQAAADgGeNMN5BEPuzfQwcOH9PKNZskScWLFZLdbtfzJQorbdrUOrw7+hZhXl6eqle7mkoWK6zBw8cnZ8kAAAAADEboBpLI0T9Oqd87nXTt2g25u5v18cDeWrJ8tSZ8MVvuZrNjv0H9uuvg4WNavGxVMlYLAAAA4FkgdANJZOmKNQrIm0uzvhitu8HBWrthq8ZOmq6QkFCn/e4Fh+jmrUDdCrydTJUCAAAAeFYI3UASGjtxusZOnJ7gPn0HjXxG1QAAAABIbiykBgAAAACAQQjdAAAAAAAYhNANAAAAAIBBCN0AAAAAABiE0A0AAAAAgEEI3QAAAAAAGITQDQAAAACAQbhPN/6vjZy2KblLSFIDu1RL7hIAAAAAPIQz3QAAAAAAGITQDQAAAACAQQjdAAAAAAAYhNANAAAAAIBBCN0AAAAAABiE0A0AAAAAgEEI3QAAAAAAGITQDQAAAACAQQjdAAAAAAAYhNANAAAAAIBBCN0AAAAAABiE0A0AAAAAgEEI3QAAAAAAGITQDQAAAACAQQjdAAAAAAAYhNANAAAAAIBBCN0AAAAAABiE0A0AAAAAgEEI3f/n5k0fr9cb1ZEkNa7/inZu/EHH9q3Tt7MnKXvWzMlcHQAAwH8Pv3/B1fA9+3QI3f/HGtWrqaovlZMk5cyRVf16d1bnHh+oRv22unDxssaNHJTMFQIAAPy38PsXXA3fs0/PJUL3sEG9debYdsefLWsWSpLyB+TRiu9n6vCu1RrYt1syV+laUqXy06D+PXTq7zOSpKKF8uvgoaM6cvxPXbx0RYuWrdJzuXMkc5UAAAD/Hfz+BVfD92zScE/uAhKjWOECat+lr/YfPCJJstvtslosmjN1jLbs2KMefYdo2MDeatq4rhYvW5XM1bqGwf17aO2GrfL08JAknfzrH71Y7nkVKZRPZ89d1Bstm2jbzr3JXCUAAMB/B79/wdXwPZs0UvyZbrPZrPz5ntOv+w4p6M5dBd25q3vBIapaubz8/Hw1fMxknT13UWMnzVDzJvWSu1yXUKFsKVUsX0ajx3/pGDv51z9atW6zVv0wV0f2rFWp4oU14tMpyVglAADAfwe/f8HV8D2bdFJ86C6UP69MJpNWL52rEwc2at708cqaJZMKFQjQwUNHFRoaJkk6fuKU8gXkTvBYVotFvj7ejj8+Pt7P4B2kLB5Wq0YO7a/Bw8bp7r1gx3ip4kVUo2pFNWjeSYXK1NSKVRv01bRPk7FSAACA/wZ+/4Kr4Xs2aaX40B2QN5f+PHVaPfsOVY36bRQREaFRQ/vJz9dH585fctrXbrfL398v3mN169xWR/euc/zZs3m5wdWnPL26ttfhI8e1aesup/F6darpp9Ubdej34woODtGnn81QzhxZVbhgQDJVCgAA8N/A719wNXzPJq0Uf0338p/Xa/nP6x2PPxoxQdvWLtKpv88oPDzcad+wsHB5eXooKOhOnMeaOmO+Zn210PHYx8f7/y54N3y1htKmTa3Du1dLkry8PFWvdjUt+XG1fB868+/r4y0vL0+5uZmTq1QAAID/BH7/gqvhezZppfjQ/aigoLsym826dv2mCuTL47TNx8dbNltEvM8Nt9kUbrMZXWKK9nrb7nI3P/ifYlC/7jp4+JiuXb+hUUP7q+MbJ3T9xi21eK2ert+4pT/+PJWM1QIAALg+fv+Cq+F7Nmml+ND9Yf8eOnD4mFau2SRJKl6skOx2u06c/EstXn+wcFr2rJnlYbUq8HZQcpXqEi5fueb0+F5wiG7eCtSyn9YpZ45s6vBGM2XMkE5/nvxbb/capIgIezJVCgAA8N/A719wNXzPJq0UH7qP/nFK/d7ppGvXbsjd3ayPB/bWkuWrtXXHXvn5+qpJg9paumKNunZqo+279ikyMjK5S3YpfQeNdPz9s6lz9dnUuclYDQAAwH8fv3/B1fA9+3RSfOheumKNAvLm0qwvRutucLDWbtiqsZOmy26364OhY/X52CEa2LebzGY3NWvXM7nLBQAAAADAIcWHbkkaO3G6xk6cHmt83cZtqlKnhYoXLaj9B4/o5q3AZ18cAAAAAADxcInQnZArV69r/abtyV0GAAAAAACxpPj7dAMAAAAA4KoI3QAAAAAAGITQDQAAAACAQQjdAAAAAAAYxOUXUvt/MGX+f2uhuO5tKyV3CQAAAAkq9dqs5C4hSR384a3kLgEGy/DSZ8ldQpK6tu2d5C4hyXCmGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihG4DLmTd9vF5vVCfR4wD+u/h5YBx6CwBJg9ANwKU0qldTVV8ql+hxAP9d/DwwDr0FgKRD6AbgMlKl8tOg/j106u8ziRoH8N/FzwPj0FsASFruyV0AACTW4P49tHbDVnl6eCRqHMB/Fz8PjENvASBpcaYbgEuoULaUKpYvo9Hjv0zUOID/Ln4eGIfeAkDSI3QDSPE8rFaNHNpfg4eN0917wY8dB/Dfxc8D49BbADAGoRtAitera3sdPnJcm7buStQ4gP8ufh4Yh94CgDG4phtAitfw1RpKmza1Du9eLUny8vJUvdrVdP3GzTjHSxYrrMHDxydnyQAMws8D49BbADAGoRtAivd62+5yN5sdjwf1666Dh49pxaoNcY4vXrYqOcoE8Azw88A49BYAjEHoBpDiXb5yzenxveAQ3bwVGO/4rcDbz7I8AM8QPw+MQ28BwBiEbgAup++gkU80DuC/i58HxqG3AJA0WEgNAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDcJ9uAIb4YPza5C4hSY1675XkLgFwWQ26LUzuEpLUiqktkrsEh6rtvk7uEpLU5nlvJHcJAJDkONMNAAAAAIBBCN0AAAAAABjkqUK3u7tZPd5OeBpQtcoVnuYlAAAAAABwWU8VuiMjo9T1rTYJ7jN+1KCneQkAAAAAAFzWEy2k1rh+LZlMboqMtMtisejXfb/p3r1gFS9aUFVfKi+73S6z2axftu7S0A/eUeu3+ijozl2jagcAAAAAIEV7otDdr/fbCgy8redy59T1m7c0avyXunPnrooUyq+GdWsoa5ZMunDpsq5cuaZ06dIoLCxcEbYIo2oHAAAAACBFe6Lp5bduBaruax104eJlTZg8W6aHtk2d9Y2uXLuuqTO/lSRFREQoKioqKWsFAAAAAMClJOnq5WRsAAAAAAAe4JZhAAAAAAAY5Imu6Y5LlKJPb/fu1kEZ0qdV725vymQyKX26NPpx4QylSuX/1EUCAAAAAOCKnvpMt+n+ld07du/TnXv3tPPX/dq154CC7tzV198tVWho6FMXCQAAAACAK0qy6eV7DxzWvXvB2rP/sPYf/F137t7VDz+uUVhYeFK9BAAAAAAALoWF1AAAAAAAMMgThW53d3eVLllUHp4eypMru9O2TBnTy2JxV+ZM6ZO0QAAAAAAAXNUThe5U/n76euYEpfL3U6f2LRQlycPDKpPJpH7vdFa2LJnUt1cnSZLVYpWfr48RNQMAAAAA4BKeaPXy8tWaxBobOaSvlq5Yo3UbtyrcFiEPq0V37t5T9mxZZDKZ5OXtlWTFAgAAAADgSp7qlmFWi0WeHh4KDQ1TaGiY07bxk2dJkkJCWL0cAAAAAPD/6akWUouw29Wx+4AE96ler/XTvAQAAAAAAC7rqUJ3ZGSktu/al1S1AAAAAADwn/KvQrfF4q5RQ/vLy8vzsfu+3aGVvJPwuu5508fr9UZ1JEn5A/JoxfczdXjXag3s2y3JXgMAAAAAgKTwr0K33R6pFq/XU+c3W6pZk1dVoWwppU+XJtZ+lSqUUf/enVWjasWnLlSSGtWrqaovlZMUfT35nKlj9PuxE6rXrKPy5c2tpo3rJsnrAAAAAACQFP7VQmqRkZGSpDKliildujTKlCG90qT217kLl7R91z59s3C5LBZ3fTnpE/24coNWrNrw1IWmSuWnQf176NTfZyRJVSuXl5+fr4aPmazQ0DCNnTRDwwe/q8XLVj31awEAAAAAkBT+9erlUVFR6tTzA8eq5f7+fipdsogavlpTK5fMls0WoSU/rtbgj8cnSaGD+/fQ2g1b5enhIUkqVCBABw8ddbz+8ROnlC8gd4LHsFosslotjsc+Pt5JUhsAAAAAAHFJdOj29PTQ919N1vpftmvz1t2SooN3DG8vT+XIllVFC+fXjVuBCrp9R6lT+Tvt829VKFtKFcuXUa0GbTV0YG9Jkp+vj86dv+S0n91ul7+/n4KC7sR5nG6d26pP9w5PXQ8AAAAAAImR6NCdJnUqHf3jpGq+XEm9u3WQyWTSp58MlNXirsIF8ylTpvQ6cPCIZsxdqGU/rZW3t5dWfD9T7/V8y3HP7n/Dw2rVyKH9NXjYON29F+wYj4iwy6Rwp33DwsLl5ekRb+ieOmO+Zn210PHYx8dbezYv/9e1AQAAAACQkESH7kuXr2rg0E8lSZkzZVDtmlVUoezzqvpSOYWEhKr/4NH6ceV6x/63b99RnwHD9d1Xn2v5z+v01+mz/6rAXl3b6/CR49q0dZfTeODtIBXIl8dpzMfHWzZbRLzHCrfZFG6z/as6AAAAAAB4Uk90TfeH/Xtoy449SpsmlWpXr6wWb/ZS1ZfK69VXXtYLzxdXrhxZtWL1Rv1z5rzKli6h6lVf1Mo1v6hyxXL/OnQ3fLWG0qZNrcO7V0uSvLw8Va92NZ2/eEnu7g/Kz541szysVgXeDvpXrwMAAAAAQFJ7otB99fpNjRzaTwcPHVVYuE0vlC6uz8cO0aCPx2nl2l/01+HN6tGlndZv2q40qf2178DvGj5msm4F3v7XBb7etrvczWbH40H9uuvg4WNavGyVNvz0jZo0qK2lK9aoa6c22r5rn2NldQAAAAAAklui79NtMpk0Z/4iVX+1tTb8skNRUZHKmzun+g4eqTUbtjj2q1G/je7dC1b5F0rpz1OnnypwS9LlK9d0/uJlx597wSG6eStQtwJv64OhYzVySF/t27pCdWtV1eiJ057qtQAAAAAASEqJPtNd4+WKmvH5SKfVyCtXLCtJWrdxmzZu2amoqChdunxVC5f8pGpVXtQnH72nvQcO68rV60lWcN9BIx1/X7dxm6rUaaHiRQtq/8EjunkrMMleBwAAAACAp5Xo0P3rvkNq3KqL7Ha7ypYuocH9e+iv02f0/kdjlT5dGk0a85Ek6c02TeXt7aXFy1YpMjJSg/p2V6/+wwx7A1euXtf6TdsNOz4AAAAAAP9WoqeXBwXdUXBwiMaPHCR3d7P2Hzyik6f+Ud9enbT+lx0qU7mBTCaT6tSsol5d2mn77n2aMnO+qlYurxzZsxr5HgAAAAAASJESHbolafSw/vr+h591+cp1Rdjt6tlvqKxWiz56v6fs9xcwa/1WH73V/X3t3XdIwcEhWr9pu5o3edWQ4gEAAAAASMmeaPXy1m/1UUhIqArke06Ll61URIRd7w0cqVbNGkiS1t2f5v3wPbW/W/KT/jlzLglLBgAAAADANTxR6A4JCZUknTj5t06c/FuSdPrMOY34dIok6e1eA2M9Z9+Bw09bIwAAAAAALumJppcnlo+3lyqULWXEoQEAAAAAcBmGhO4c2bNq3ozxRhwaAAAAAACX8UTTy2M0aVA73m1LV6yRzWaTzRbxr4sCAAAAAOC/4F+F7vEjByrwdpCioqKUOpW/Am8HSZJSp/LXT6s3KCoqShERhG4AAAAAwP+3RE8vf7V2NRUuGOB4XKN+Gz1fqb5MJpNerPG6XqjSSCaTyZAiAQAAAABwRYk+0/1u9w7KlTO7Fi9bpaioKKdtUVFRjj8AAAAAACBaokN33dc7qEHdGmrVNPqe3PHla4I3AAAAAADREh26w8LCtXjZKi1etkqnj2xV5zdbKjgkRJLU8+12irDbJUm9urSXv7+vPKxW9eraXm5ubrJaLRo7cbox7wAAAAAAgBTqXy2kJkmlShR2rFBeumRRRd4/w13m+WLysFrlZnZTuTIl5e5ulq+PN6EbAAAAAPB/54lCd948OZUmdSpFRUWpW58PdeNmoE4f2ao3u/WXzRahk79tUru3+ypn9qxaumCaWnfsbVDZAAAAAACkfIlevbx757ZavewrNapXK87tD1/LzXXdAAAAAAA8Qei2WCx6u9dADR4+XiaTybGQGquWAwAAAAAQt0RPL580ZY7T458Wz1KkPVImk0kbf/om3tXMAQAAAAD4f/WvFlIbPHy8wsLCFRkZpchIu0wmk9zc3GSxWGSzRchkMslkMiV1rQAAAAAAuJR/Fbq//f7HBLdbLBZZLZZ/VRAAAAAAAP8Vib6m+0mcO39Rb3R+z4hDAwAAAADgMp4odBctlF8nD/3y2P3uBYdoz/5D/7ooAAAAAAD+C54odIeFh8tmsxlVCwAAAAAA/ylPFLrtdrvs9kijagEAAAAA4D/liRdSs1os6t65baL3Dwq6qx9WrFFwcMiTvhQAAAAAAC7tiUO32WzWSxVeSNS+nl6eKl6kgPLlza2PRkx84uIAAAAAAHBlTxy67wUHq8WbvRK9/7IF01S6VNEnfRkAAAAAAFzev7pP95O4FXhbgbfvGP0yAAAAAACkOIaH7g7dBhj9EgAAAAAApEhPtHq5xWKRh9X62P1qVqv0RIutAQAAAADwX/REoTvozl19t+Snx+5nt0eqd/cO6tS+xb8uDAAAAAAAV/dEofvS5av6ePTner1RnQT327Rlp/oPHqX+fd5WnZpVnqpAAAAAAABc1RNd0+3m5qbPxn6kurWq6uy5izp95px+XjxbNptNtgh7rP2joqI0acxHskV8pA2/7EiyogEAAAAAcAWJDt0mk0mffzpENV+upG59PtKe/YeUKWN6ZcyQTn0HjYzzOR4eHqpVrZI8PTySrGAAAAAAAFxFokN3VFSUrly9ri69B+mXrbudxn/4cU28z1uw6MenqxAAAAAAABf1RNPLh4+Z7PTYarHIZDLJ3d2siDimlwMAAAAA8P/siRZSe9Tlq9dUq1E7AjcAAAAAAHF4qtBts0Xo5KnTSVULAAAAAAD/KU8VugEAAAAAQPwI3QAAAAAAGITQDQAAAACAQQjdAAAAAAAYhNANAAAAAIBBCN0AAAAAABiE0A0AAAAAgEEI3QAAAAAAGITQDQAAAACAQQjdAAAAAAAYhNANAAAAAIBBXCZ0p07lr9IliypN6lTJXQoAAAAAAIniEqG7fp3q2rrmew3/8F3t2viD6tepLknKH5BHK76fqcO7Vmtg327JXCUAAAAAAM5SfOj29/PVsEG99Xrbbqr7Wgd9MPRTvf9eV1ktFs2ZOka/Hzuhes06Kl/e3GrauG5ylwsAAAAAgEOKD90+Pt76ePTn+vPUaUnS8ROnlMrfT1Url5efn6+Gj5mss+cuauykGWrepF4yVwsAAAAAwAMpPnRfunxVy39eL0lydzer85sttWb9FhUqEKCDh44qNDRMUnQYzxeQOxkrBQAAAADAWYoP3TEKFQjQ/m0/6aWKL+jj0Z/Lz9dH585fctrHbrfL398v3mNYLRb5+ng7/vj4eBtdNgAAAADg/5h7cheQWMdPnFKrDu9oUL/u+nTEQJ3+55xMCnfaJywsXF6eHgoKuhPnMbp1bqs+3Ts8i3IBAAAAAHCdM92SdPT4Sb03cKRqVaukwNtBSps2tdN2Hx9v2WwR8T5/6oz5KvJCLcefslUbGVswAAAAAOD/WooP3S+We97pdmD2CLsk6a/TZ1SqRBHHePasmeVhtSrwdlC8xwq32XT3XrDjz717wcYVDgAAAAD4v5fiQ/epv8+oVbOGatm0gbJkzqgB73bR1h17tWnLLvn5+qpJg9qSpK6d2mj7rn2KjIxM5ooBAAAAAIiW4kP31Ws31K3Ph+r4RlOtXzFfXl6e6vP+cNntdn0wdKxGDumrfVtXqG6tqho9cVpylwsAAAAAgINLLKS2dcce1ajfNtb4uo3bVKVOCxUvWlD7Dx7RzVuBz744AAAAAADi4RKhOyFXrl7X+k3bk7sMAAAAAABiSfHTywEAAAAAcFWEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADELoBgAAAADAIIRuAAAAAAAMQugGAAAAAMAghG4AAAAAAAxC6AYAAAAAwCCEbgAAAAAADOISobtmtUratnaR/jq8WcsXzlDAc7kkSfkD8mjF9zN1eNdqDezbLZmrBAAAAADAWYoP3TlzZNW4EQM1euI0lXu5sS5cvKwxHw+Q1WLRnKlj9PuxE6rXrKPy5c2tpo3rJne5AAAAAAA4pPjQHfBcbo2dNF0r12zS9Ru39M3CZSpWtKCqVi4vPz9fDR8zWWfPXdTYSTPUvEm95C4XAAAAAAAH9+Qu4HE2bdnp9Pi5PDl15uwFFSoQoIOHjio0NEySdPzEKeULyJ3gsawWi6xWi+Oxj493ktcLAAAAAECMFB+6H2axuKvzmy01e94i5cyRVefOX3Labrfb5e/vp6CgO3E+v1vnturTvcOzKBUAAAAAgJQ/vfxhfXt10r3gEC1Y/KMiIuwKDw932h4WFi4vT494nz91xnwVeaGW40/Zqo0MrhgAAAAA8P/MZc50V6pQRq2bN1Ljlm8rIsKuwNtBKpAvj9M+Pj7estki4j1GuM2mcJvN6FIBAAAAAJDkIme6c2TPqs/GDtHgj8fp5F//SJIOHzmuUiWKOPbJnjWzPKxWBd4OSqYqAQAAAABwluJDt4eHVXO/HKN1G7dp3abt8vb2kre3l/bsPyQ/X181aVBbktS1Uxtt37VPkZGRyVwxAAAAAADRUvz08iqVyilf3jzKlzePWjVr4BivWON1fTB0rD4fO0QD+3aT2eymZu16JmOlAAAAAAA4S/Ghe93GbcpVuFKc285fvKwqdVqoeNGC2n/wiG7eCny2xQEAAAAAkIAUH7of58rV61q/aXtylwEAAAAAQCwp/ppuAAAAAABcFaEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwiMuE7tSp/LV93SJlz5rZMZY/II9WfD9Th3et1sC+3ZKxOgAAAAAAYnOJ0J0mdSrN/XKscmTP6hizWiyaM3WMfj92QvWadVS+vLnVtHHdZKwSAAAAAABnLhG6vxg/TCtWbXQaq1q5vPz8fDV8zGSdPXdRYyfNUPMm9ZKpQgAAAAAAYnOJ0P3+kLGa+81ip7FCBQJ08NBRhYaGSZKOnzilfAG5k6E6AAAAAADi5p7cBSTGufMXY435+fro3PlLTmN2u13+/n4KCroT53GsFousVovjsY+Pd9IWCgAAAADAQ1widMclIsIuk8KdxsLCwuXl6RFv6O7Wua36dO/wLMoDAAAAAMB1Q3fg7SAVyJfHaczHx1s2W0S8z5k6Y75mfbXQaf89m5cbVSIAAAAA4P+cy4buw0eOq8XrDxZOy541szysVgXeDor3OeE2m8JttmdRHgAAAAAArrGQWlx+3XdIfr6+atKgtiSpa6c22r5rnyIjI5O5MgAAAAAAornsmW673a4Pho7V52OHaGDfbjKb3dSsXc/kLgsAAAAAAAeXCt25Cldyerxu4zZVqdNCxYsW1P6DR3TzVmDyFAYAAAAAQBxcKnTH5crV61q/aXtylwEAAAAAQCwue003AAAAAAApHaEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwiMuH7vwBebTi+5k6vGu1BvbtltzlAAAAAADg4NKh22qxaM7UMfr92AnVa9ZR+fLmVtPGdZO7LAAAAAAAJLl46K5aubz8/Hw1fMxknT13UWMnzVDzJvWSuywAAAAAACS5eOguVCBABw8dVWhomCTp+IlTyheQO3mLAgAAAADgPvfkLuBp+Pn66Nz5S05jdrtd/v5+Cgq6E2t/q8Uiq9XieOzj4+3035TK3aU/GonNNwX1292c3BUkrZTUW4tL/3SJLSX11kpvDeFhMSV3CUkqpfRVkjzprWE8rfTWKF4e/61fwFJSb73prSF8PP9bfQ1JIX1NjLv3ghPcbspZqGLUM6olyb3/bldZ3M0aPvYLx9iujT+oUcu3deXq9Vj79+7eQX26d3iWJQIAAAAA/sOKvFArweDt0udLAm8HqUC+PE5jPj7estki4tx/6oz5mvXVQqexNKn8det2kGE1ugofH2/t2bxcZas20r3HfFKDJ0NvjUNvjUNvjUFfjUNvjUNvjUNvjUNvjUFf4/a4M90uHboPHzmuFq8/WDgte9bM8rBaFRhPiA632RRuszmNPa5B/2/u3QumJwaht8aht8aht8agr8aht8aht8aht8aht8agr0/GpSf+/7rvkPx8fdWkQW1JUtdObbR91z5FRkYmc2UAAAAAALj4mW673a4Pho7V52OHaGDfbjKb3dSsXc/kLgsAAAAAAEkuHrolad3GbapSp4WKFy2o/QeP6OatwOQuySWFh9s0ccochYfbHr8zngi9NQ69NQ69NQZ9NQ69NQ69NQ69NQ69NQZ9/XdcevVyAAAAAABSMpe+phsAAAAAgJSM0A0AAAAAgEEI3S7K3d2s3LmyO4299OILSpc2dbzPyZolk8qWLvHUr93itXoqWij/Ux8nJaKvxqG3xqG3xqG3xqCvxqG3xqG3xqG3SYdepkwuv5Da/6sypYrr80+H6OW6LXUvOER+vj6aMuFjjZ4wTRcuXpYkubmZ5OZm1sbNOyRJ5cqU1FvtmunV1ztKkjJnyqA2zRvFOvb4ybMUFRX/pf7ly5bS8yWLqv+Ho5P+jSUz+mocV+ht3jw55ePjraPHT8put//Ld/rsuUJvXRW9NQZ9NQ69NQ69NQ69TTr0MmUidLuo3XsPasWqDUqfPq3unb2gvu900q49B5XK30+p/P0kSSaTFBISJkn6YvwwVapQRh5Wq7avX6w/TvylCV/MUu2alfXZ1K8cx/1i/DCN+3ym43HePDm1eP4U3bl7zzHm6eEhq9WiLS8slCSZzWb5+/qqbed3dej344796taqqjdaNlGLN3sZ2YoklZL76ubmpo8H91GjerVkdnPTkuWrNXTUZy4TDlNyb00mk6Z9NkLFixSQzRYhe2Skmrbtpus3bj2Dzjy9lNzbh+XInlXrf/xaBUvXMKoVSS6l9/b3X9fI38/X8Zxxn83U5OnzDOtHUknpfZUkDw+rNqz4RiPHTdHq9VuMbEeSSsm9XfjVZFUoWypWzbkKVzKiFUkuJffWw8Oq0cP6q2a1lxQaGqbFy1Zp7KTpCQaklCQl99bH20sfvd9L1aq+qLCwcM36aqG++vaHZ9CVfycl9zJGfBnhjZZN1Ktre4WEhGrAR6O189cDSd6f5ELodjEWi7t+Xjxb9shIuZvNqvpSOe3d/7teqviCvpg2T3/9c1Z79x9WiWKFVLxIQc1fuEySlCZ1KnV/b4iOHvtTeXLl0KB+3RURYdf1G4HaunOPihTMp52/HtCkMR86vZ4tIkIeHh56vlJ9x1juXNn1Rssm+nj05/HW+dKLL2jcyIE6fOSEMY1IYq7Q126d2qhIofxq3PJtWSzumj9zoo7+cVILl/xkXGOSgCv0tmnjukqdyk+VajVTZGSk5s+coLYtG2viF3OMa0wScIXePmzkkL7y8vJM2iYYxBV6mydXDt0OuqOKNV53jIWGhhnQjaTjCn2N0btbB/1z9rzLBG5X6G2Hbv3lbjY7HterU131ar9sQDeSliv09u0OreTm5qbq9VorU8b0mjrhY/11+oyWLF9tXGOSgCv0dsSQvsqUIb0at3hb2bNl0bTPPlFISKi+X7rSuMb8C67QSyn+jFC5YlkN6tddPfoO0c2bgZo05iPVb/aWAm8HJWGXkg+h28XYbBF6pVE7TRg1WIuWrtSe/Yfk5mZSo3q11KFtU924GaiTf/2jnNmzKk+u7MqYIZ3GT56liAi7fLy9tGnlt+rU4wNFPHR2NF/ePBo2qI9qNmgb5+s9+ilpKn8/1a9TLd7/oXLlzKZPPnpP879bphLFCidtAwziCn1NlzaN3uk/TGfPXZQkbd62W8WLFkzxodsVenvl6nUNe2jWwIk//3J8GpySuUJvYzSu/4qyZs6YNG/8GXCF3pYsXkgHfjuqoDt3k/bNG8gV+ipJ+QPyqH3r11Svaceke/MGc4XeBgeHOP5uMpnUoe3r6j845U9DdYXelixWSPMXLtOVq9d15ep17di9X3ly50jaRhggpffWarHo1drV1KBZJ52/eFnnL17W9z/8rJrVXkpxoTul91JKOCO0adFIS35crfWbtkuS1m3apto1KmvhDz8/bWtSBEK3izKZov8bGRmpyEjp132HVKlCGf1z9oI2bt6hF54vLjc3k9Zu3OZ4zr3gEJ05d1H5AvI4HcvDanEEubhERkY6PbbZbEqXNo0O7njwP4G7u7veGzhC6zZu063AINVv+pZqVX/JZUJ3jJTc12GjPnPa/7k8ObVm/eZ/+U6fvZTc2y3bf3WM58ieVa/WrqY+7w9/mrf7TKXk3kpS6lT+Gtivm7r0GqSlC6Y97dt9plJyb0sUK6SSxQrp8O7Vstki9N3iFU5T/1KylNxXSRo1tJ/2/3ZEpUoUkdls1p+nTj/tW35mUnpvY9SpVVVXrt7QgUNH/+1bfeZScm9PnDytlk0baP/BI8qSOaOqVX1RvfoOffo3/Yyk1N7uP/i7rBaLLly64thmj4yU/ZFjpCQptZePywiFCwRo1MoHvyMc+v149OJuhG4kJ6vVquEfvitvby9NmTFfCxb9qGvXb+r1hrVVvcqL8vPz0b4Dv+vIsROyWB58mdt1fk958+SSFP0psyT5+/nq6rUbTmMx3M3mOK8ZvnrthspXa+J4bH5oulhQ0J2ke6PPWEru68NeLPe8CuTLo7e6D3i6N/wMuUJv3+3RUd06tdX3S3/Wrj0Hn/5NPyMpvbcfDuipn1dv0v7fjiTNG36GUnJvc+XIprUbt2rO/MXKnTObpk4crj/+/Es/r9mUdA0wSErua73a1VTm+eJasny1cufMrn7vdNaMud9p9teLkq4BBkrJvX1Y+9avafY81+hpjJTc2y9nf6uNP83X77+ukSTN+/YH/h3T0/c2MjJSly5f1SvVX9LiZavk5eWpV195WTPnLkzaBiShlNpLKeGM4Ovro3PnHwT8u3fvKVOm9E/y1lM0QreL8vXx1jv9h6lmtZcUHh7uGJ80da6WLF+talVeVN1aVSVJg/v3UPkXSqpwoQCFhYXLw2rRX6fPyeIe/eXPmiWTrly7Lin2P47e3l4KD7c9th5XWczrcVyhr97eXho9bIA+mzpXN24G/st3+uy5Qm+/nP2tTpw6rREfvafN23Y7pjildCm5txXLl1a5MiVUs+EbT/s2k0VK7u2bXfs7/n7p8lV99e0PqvvKyy4RulNyX1s3a6gVqzbovYEjJEVfyrNg7mdauOQn3XtoenRKlZJ7GyNfQB7lypFN639xjZ+xMVJyb/u/01l7D/yugUM/VapUfpr86VC1b/1ail7w62EpubcDPhqjCaMGq3aNKipaOL88PT20/Od1T/uWDZOSe5mQiAi70/HCwsPl5eka68AkBqHbRWXNkknXb9ySxd1dNluEY7x3tzfVrtVrjk+xJGnIiEkKeC63Fi1dqXx5c2vj5p0a8G4X3Q0O1r4Dh1WsSAFlzJBOFcqW0rKf1srNzc0xXSRD+rS6eu2GsmTOqN2blurmrUDHa8VMHfH29tK02d+m+EWnEsMV+vrJh+/p/MVLmpGCP2WNiyv0NiQkVCvXbFLe3DnUtHFdlwndKbW3HlarRgzpqw+GfqqQkNBn15AklFJ7G5egoLvKkimDQZ1IWim5r5kzZ9Tihxaf+v3YCXlYrcqUMb3+/uec0a15aim5tzEa1q2hNRu2xJqamtKl5N42qFtDTd/orsDbQQq8HaTPp32ld3u+5TKhOyX3dsv2X/Vi9deUJ3cOfT1jvGbM/U537wU/o848uZTcy4Tcvh3kdC9xHx9v2WyPD/WugtDtgtKnS6O0aVLr6rUbsljcZbfb5WG1ymQyxfoUy2w2KzIyUr4+3jr512kN7NtNv/1+TJL0z5nzmjb7W21auUB/njqtXDmyqfcA5+tYc+XMpvMXLik8PFyhYWEqVbFerHrGjRioCJvrn+l2hb62b/2aXiz3vF59vYPL3AZESvm9HdSvuzZt2emYihdhtyvS7hq/DKbk3pYsXli5cmTTlAkfO+1zePdqdeg2QPsOHDaoK0kjJffW09NDyxZMV8PmnRR+/5eSEsUK6tyFywZ35eml5L5K0qXLV+Tp6eF4nD1rZkVGRuri5asGdSTppPTexni1djUNGvapMU0wSErvrdndrPTp0+rEyb8lSRkzpJfZzc3AjiSdlN5bKfqs63O5cygqKipFX2riCr2Mz6Ejf6hUiSLasXu/JKlwwXy6fOX6U3Yk5SB0u6CXXiyrfQejP6Hy9PSQ3W7XzC9GKWOGdHqxfGl1eKOZY991y+epR9+hypUzm06fOa+efYc6Xb/Rp3sHrVz7i9KnS+NYrbBEsUKOe+mVLV1Cf/9zTraIhP+HsUe6fuhO6X2tWL60PujbTR269ldIaJi8vb1kt9sVFhaewBFShpTe2wuXrmjk0P7q1W+oIiMj1aZFY40aNzXJ3r+RUnJvfzt8TC/Vaua0bceGJarb5E1du37z6d+8wVJyb0NDwxQYeFvDBvXR/IVLVbZ0CdWrXV2tOryTpD0wQkruqyT9+PN6devcVkeP/6nbQXc0dGBvbdu5N8Xfjk1K+b2VoherzJY1k/YfdK01HlJ6b/cd+F0Der+tOenSKHXqVOr5djst/CFl390kRkrvrRR9PXPv7h00fvKsFP2zwBV6GZ9V637RiI/66vsfflZkZKSaN3k1UbcjdRWu8REYnLRv/ZqWrVij0iWL6oXniys0LExvdH5PH30yUdt37lXdJm9q+uwFOv7HKTVo3kkmk3Tp8jWFhITqnzPnVaVSOUVFRuqlF19Q9ZcrauKUOYqKil54wWJx13dzP1O+gDxKncpfNV6upJ2/7pebySSrxaItaxbG+lO7ZhWZ3eJeKMWVpPS+tmv9mjw9PLRgzmc6vm+9ju9br3nTxydjxxIvpfd23rc/aMMv2/X1jPGaM3WsZs/7Xj+t3piMHUu8lNzbsPBwxy1WYv5I0vmLlxUWnvI/LErJvZWk9waNVO6c2bTkm6lq1uRV9ew7RHv2H0rGjiVOSu/r90tXasGiHzVlwsdas/QrSVLfgSOTqVtPJqX3VpJeLFtKR4+fdImfAQ9L6b39YOhYXb12Q8MG9VH/3p21aetOTZ42Lxk7lngpvbeS9FrD2rLbI7V42apk6lLiuEIv47Phlx36de9v2rJmobatW6QTJ//W6vVbDO7Ys8OZbhdTsXxpeXhYtW7TdjVtVEcHfjuq3Xt/U/Mmr6pb57bqef/2EOt/2a7KFcvqx+9naMXKDfpx5XpJ0dNm3+7QSnv3H9bojweoTcc+Cgq6owOHjujD/j30wXtdtXf/YZ08dVr5A/Lo8O/HtWvPQWVIn1bhNpuq1G4Rq6ZxIwbK3RL7f6gly1dryUPXxaVkrtDXzj0HPpNeJDVX6G1UVJRGfDpFIz6d8kx6klRcobePylW4kiG9SGqu0NuLl66opQuc2X6YK/RVkqbP+U7T53xneD+Skqv09vulK1Pc/Y0fxxV6e/HSFb3V4/1n0o+k5Aq9lVzjd1pX6aUUfz979R+m50sUkZe3l3ben2b+X2HKWaii61wYCknRqxI+uoDD643qaMfu/br0yDVn9WpX09qNW+Xm5qawsHCZTCblzpldZ85dUMYM6XT5yrVEv66Xl6fLLoaUGPTVOPTWOPTWOPTWGPTVOPTWOPTWOPQ26dDLlIvQDQAAAACAQbimGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAAAAAgxC6AQAAAAAwCKEbAAAAAACDELoBAAAAADAIoRsAAAAAAIMQugEAAAAAMAihGwAAF2YymZK7BAAAkABCNwAALqp0yaLat3WFsmfN/Nh9M2ZIp+dLFIl3e6tmDVWqeBFlzpRBGTOkS/BYVotF61fMV8umDZ645hi+Pt6O1zGbzZo/c4LKlCr2r48HAEBKRegGAMBFHf/zL/n6eOu1RnWcxs1mszw9PZzGGtWrpVlTRitTxvRxHqtB3RoqkP85NahbQwu/miwfb694X7dV84bKlCG9tmz/NdG1ZsqYXs+XKKLmTV7V+JGDtGvTUo0fOUiSVKhAgP7X3p1GV1WdYRz/3zkTgyDIDBUJEhygMgmaKEEbREGmAgIrICAzgoggWsEBLagFK2BpgwiCrkQQXFpFq0EwGIPRSEWQMCYQARkkAULudG4/RI5c72XQmkWu6/l9Oufdw9n3fMl6s/fZO7FTO0pPn77o/kRERCKF/VIPQERERC5s6qRRjBkxKGzZA+OG8cC4YUGxU6WlJLS5HQC73caQQX1IW5pOaelpataoTnHJCarExeH1ejECAQgEsNmsrEhfw56CfbhcLsrcHvx+f1C/9epeweTxw6laJY7sj1aFHc+OXXvo2msoXq/PjC1Pm0v1alUoKTmJy+Vk+sxn2bI1H4A2f7yWbdt3svXbnb/6/YiIiFRWlkYtOgUu9SBERETk/O4fM5SULkn0HjQ6KH5Z9ao4HA6+P3zUjDkdDux2G0eO/gDAyHsHMHnCCNxuD1arFafTQd/BY8lYNh+v14dhGERHReHz+fD6fFitVhwOOyl3p7J77z6z36goF68tnsfRH45z/0NPhIyx+x1dmPXYZPoMGkvef78JKouKclFW5mZgvx70vPNP9Bk8xiyb//zj3NU1OezvTuk5hG3blYyLiEjk0ky3iIhIBHC7PRiGn9LS4CXYj0wZy7UJzeneb4QZK+WnOs2aNmHimHsZMe7hkOXg8a06m9crFs9j9dvvs3LNe2GfHxcbwz9emEW1alWZOmMOjz40jseffgG3xwNA3Tq1mT55DAv/tTwk4QYoK3OH7dfpcJB0U3vuGTaRXbsLzPiQgX0Y0Pcuvs3fda5XIiIiEhGUdIuIiESAQMAgEGZtWlmZm0AgQJ0rapkxi8WCw2Fnf9FB+ve+k8wN2Xz2eR4ADocdq9WK2+2hX69uxMbGAOVJc2LHdlStEgfAlq35bPpis9kmY9l8ate6nN6DRtOgXh2639GFZk2bMGzsNKwWCy8vnEP+zj3MW7gkZIxWq5WaNarj8XpxOZ1YrRaqxMVis9m4sV1rTp48xcbs3KA2DerXISf3KwLhfrSIiEgEUdItIiISAQIBMAwjJG4YBq2uSyBn3eqQslYduzHruYX06NaF/LxMs35O7mb6DxnPmPsGs3tPId8d/J6Y6Chq16pJ0ysb06FNK97P/MRMur1eH1MefQaP10dBYREFhUX0umcUKxbPZdXyhXi9XpxOB4OGTw/5BhygYYO6bFibHhTbsul9du4uoLi4hI8+/hSAP/fqRu8eKfRLHU/LFvG8+vqb//d7ExERudSUdIuIiEQAl9OJP0zSDZC9KY/+Q8YHxZwOBx6vF4A17/yHAwcPM/vJqSSl9MfhKP/z73Z7eGXFKtZn5dDkrOXls5+YisfjDervm207gu7zd+5h7oIlPDNzCpu/3kbqyPEcPXY87PgK931HfKvONI+/krcz0vhy8zfcN/5hYmKiqVO7FseOFwNgoXwZO0DK3anY7LZf9I5EREQqIyXdIiIiESA6JgrPj99PX4wzCbfT4SAmJproaBcWLFStEofT6TAT5J533U7r61vSqEE9bk++mQb163JNQjwHDh0+Z99XNmnI+FGp9Oqewqq31jLzmRdwl7lxOZ1mHZ/fb856BwIB3B4PiZ3amTua39b5Zl7LeIuCwiKujm8KgN8wMIyA2ebn36+LiIhEIiXdIiIiEeDyGpdxvPgEUVEutn/5UUh5wdasoPs2id05fOQYbW+4jlcWPYff58fpdJCzbjVOp4M2iT2A8qXjbrcHv+HH5/Pjdnvw+UKXiNvtNjondaRvzztITuqIzVY+C927Rwq9e6SE1E9bms6Ts18MivW5uytZ2Z/TsEE9ptw/guPFJRQU7ufdVUsYMHSCWe/q+KYs++fz9LxnJEXfHfrlL0tERKQSUdItIiISAerWqc3egv3mTPHICdP54qstIfXa3nA9L819EvePy8M3fvYFza6/lQ5tW5vLy8/2ztpM1mflcNONbchc/ykr17xHk0b1g+pMnTSK1IG9MIwAG7NzsdlstL+1JwfPMRv+dkZayPL0lC6JxMZE8/Enn3FnSjKvvv4mzZv9gYTmV1F04BDZm/LM5H37jt0c++E4j0wZx5hJf/l1L0xERKSSUNItIiISAVq2aMaH67Lw+/0YhsHx4hMcPnIspF5xyQkAvF5vSNkZtWvVNM/1TlvwVwzDwGG3075NK2bNeBC7zcaLi5aZ9dPffIct2/L5cF0WtWrWIOW2pAuO9+wN1VwuJ1MfGE3a0nS8vvJ/GryyYhUWi4VPPshg5ep3g3YpDwQCzFvwMov+/jTXJDRny9btF3yeiIhIZWW91AMQERGR80u4+ipq1riM3LyvL7pNuKO2LFiYMHoISxc9X35vsTB87DSat04me1Me02bMpnnr5JCzuvcW7OffazNxuy/+m/KzdWjbGosFlry6Miie0iWR+nWv4I3V74a0WfvhBnbu2suksff+qmeKiIhUFprpFhERqeSGDu7Loe+PmDuIW61W0pe+eN42TqeTsjK3ed+yRTMaN6rPNQnxDBw2EcDcxfzn7Hb7Bc/HDndE2dnWZ+UEXaeOfNDc3O2MJo0b8kFmFvuKDoTtY9azC8yZexERkUilpFtERKSS83n9LE9fA2DuEJ468kHzHO2zdWjbmiUvzcHldATFv92xm8ee+htLX/vp7GuH46c6GzbmsLewiOGp/Ui+pSOjJz4adiwWa/kiuVu6DuDQ4SNh67yxbL650doZBYVF5c+027FaLQC8lLYcgJiYaG5NvJHkpI6cOlVqtsnckB22fxERkUiipFtERKSSe3jmHPPa7fFwbfsUTpWeDvpu+ozM9Z/SOOGmkPjG7Fw2ZucGxTp16WNeL3r5dQA2f72VxcsyzjnTfSaZP11Wds4jvQwjgMvlDFtWvXq1kLLTp8uYMW0Cfr+fWc8uCNtOREQkUlkateh0/vVjIiIiIj+yWq3ExcZQcuLkb9pvbEw0p3Qut4iI/A5pIzURERG5aIZh/OYJN6CEW0REfreUdIuIiIiIiIhUECXdIiIiIiIiIhVESbeIiIiIiIhIBVHSLSIiIiIiIlJBlHSLiIiIiIiIVBAl3SIiIiIiIiIVREm3iIiIiIiISAVR0i0iIiIiIiJSQf4HPdeqcpUdUa0AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from matplotlib.colors import LinearSegmentedColormap\n",
    "\n",
    "# 1. 读取并处理数据\n",
    "df = pd.read_excel(\"ERP订单数据.xlsx\")\n",
    "shop_names = [f'旗舰店{i}' for i in range(1, 11)]\n",
    "filtered_df = df[df['店铺名称'].isin(shop_names)]\n",
    "# 统计每个旗舰店的订单数量（按店铺分组，计数内部订单号）\n",
    "shop_order_count = filtered_df.groupby('店铺名称')['内部订单号'].count().reset_index()\n",
    "# 按旗舰店1到10排序\n",
    "shop_order_count['sort_key'] = shop_order_count['店铺名称'].str.extract(r'旗舰店(\\d+)').astype(int)\n",
    "shop_order_count = shop_order_count.sort_values('sort_key').drop('sort_key', axis=1)\n",
    "\n",
    "# 2. 配置绘图参数\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文显示问题\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "# 3. 创建蓝色渐变色映射\n",
    "colors = [(0.7, 0.8, 1), (0.2, 0.4, 0.8)]  # 浅蓝到深蓝\n",
    "cmap = LinearSegmentedColormap.from_list('blue_gradient', colors)\n",
    "\n",
    "# 4. 绘制图表\n",
    "fig, ax = plt.subplots(figsize=(10, 6))\n",
    "fig.patch.set_facecolor('#1E293B')  # 设置深蓝色背景\n",
    "ax.set_facecolor('#1E293B')\n",
    "\n",
    "# 绘制渐变柱状图\n",
    "bars = ax.bar(\n",
    "    shop_order_count['店铺名称'],\n",
    "    shop_order_count['内部订单号'],\n",
    "    color=cmap(np.linspace(0, 1, len(shop_order_count))),\n",
    "    width=0.6\n",
    ")\n",
    "\n",
    "# 在柱子上方添加数值标签\n",
    "for bar in bars:\n",
    "    height = bar.get_height()\n",
    "    ax.text(\n",
    "        bar.get_x() + bar.get_width() / 2.,\n",
    "        height + 1,\n",
    "        f'{int(height)}',\n",
    "        ha='center', va='bottom', color='white'\n",
    "    )\n",
    "\n",
    "# 5. 设置标题、说明与轴标签\n",
    "ax.set_title('各旗舰店订单数量分布', fontsize=16, color='white', pad=20)\n",
    "# 订单最多的旗舰店及占比\n",
    "max_shop = shop_order_count.loc[shop_order_count['内部订单号'].idxmax(), '店铺名称']\n",
    "max_count = shop_order_count['内部订单号'].max()\n",
    "total_count = shop_order_count['内部订单号'].sum()\n",
    "max_ratio = (max_count / total_count) * 100\n",
    "ax.text(0.5, 0.9, f'{max_shop}订单最多占比总订单的{max_ratio:.1f}%', \n",
    "        transform=ax.transAxes, ha='center', color='white', fontsize=12)\n",
    "\n",
    "ax.set_xlabel('店铺名称', fontsize=12, color='white', labelpad=10)\n",
    "ax.set_ylabel('订单数量', fontsize=12, color='white', labelpad=10)\n",
    "\n",
    "# 6. 调整坐标轴样式\n",
    "ax.tick_params(axis='x', colors='white', rotation=0)\n",
    "ax.tick_params(axis='y', colors='white')\n",
    "\n",
    "# 设置纵轴范围，预留顶部空间显示标签\n",
    "ax.set_ylim(0, shop_order_count['内部订单号'].max() * 1.2)\n",
    "\n",
    "# 隐藏顶部和右侧边框\n",
    "ax.spines['top'].set_visible(False)\n",
    "ax.spines['right'].set_visible(False)\n",
    "# 设置剩余边框颜色为白色\n",
    "ax.spines['bottom'].set_color('white')\n",
    "ax.spines['left'].set_color('white')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "23020da5-af1f-4160-a1b3-b126d5b33891",
   "metadata": {},
   "source": [
    "## 分析：\r\n",
    "\r\n",
    "### 1. 描述性统计分析\r\n",
    "- **集中趋势**：订单数量的众数为44（旗舰店3、6、7）和48（旗舰店1、8、10），说明有较多旗舰店订单量集中在这两个数值附近；中位数需将订单量排序（44、44、44、48、48、48、54、57、60、64），为\\((48 + 48)÷2 = 48\\)，反映中间水平的订单量是48。\r\n",
    "- **离散程度**：极差（最大值减最小值）为\\(64 - 44 = 20\\)，表明不同旗舰店订单量差异不算极大；方差或标准差可进一步衡量数据围绕均值的离散情况，经计算均值约为\\(51.1\\)，各数据与均值的偏差平方和相对不大，说明整体数据离散程度中等。\r\n",
    "\r\n",
    "### 2. 分布特征与异常识别\r\n",
    "- 订单量呈右偏态分布（长尾在右侧，即高订单量端），旗舰店9（64）、旗舰店5（60）、旗舰店4（57）属于相对高订单量的“长尾”部分，可视为潜在的“高产出”旗舰店；无明显极端异常值（如与其他数据差距极大的点），数据整体较规整。\r\n",
    "\r\n",
    "### 3. 占比与贡献度分析\r\n",
    "图中提到“旗舰店9订单最多占比总订单的12.5%”，总订单量约为\\(48+54+44+57+60+44+44+48+64+48 = 511\\)，经计算旗舰店9订单量（64）占比约为\\(64÷511≈12.5\\%\\)，确实是各店中贡献度最高的。同时，订单量排名靠前的旗舰店9、5、4，其订单量之和为\\(64 + 60 + 57 = 181\\)，占总订单量的\\(181÷511≈35.4\\%\\)，体现出少数旗舰店贡献了相对较多的订单\n",
    "\n",
    "，存在“头部效应”。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6c22f005-9db5-41b4-88cc-2a8a1c0a9303",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
